簡體   English   中英

實體框架實體完整性

[英]Entity Framework entity integrity

我想在保存時驗證每個實體。 也就是說,我在每個實體類中都有一些自定義C#函數來驗證數據。

我怎樣才能做到這一點? 我不想使用數據庫約束,因為它們無法表達我的約束。

我應該實現一些接口???

從EF 4.0開始,ObjectContext.SaveChanges方法是虛擬的。 覆蓋此方法並驗證其中的所有實體。

http://msdn.microsoft.com/en-us/library/dd395500.aspx

在上下文中迭代所有實體(不是已刪除的:))。 使用ObjectStateManager可以訪問上下文中的實體。

希望這有助於和最好的問候,

http://www.testmaster.ch/EntityFramework.test

實體框架3.5和4.0甚至提供了SavingChanges 實體框架4.0和4.1具有虛擬的SaveChanges方法(如前所述)。

你可以覆蓋方法或使用事件處理程序,並為3.5和4.0編寫這樣的代碼:

var entities = context.ObjectStateManager
                      .GetObjectStateEntries(EntitiState.Modified | EntityState.Added)
                      .Where(e => !e.IsRelationship)
                      .Select(e => e.Entity)
                      .OfType<YourEntityType>();

foreach(var entity in entities)
{
    entity.Validate();
}

在DbContext API(EF 4.1)中,您必須使用

var entities = context.ChangeTracker
                      .Entries<YourEntityType>()
                      .Where(e.State == EntityState.Added || e.State == EntityState.Modified)
                      .Select(e => e.Entity);

foreach(var entity in entities)
{
    entity.Validate();
}

您可以使用實體實現的自定義接口,它將公開Validate方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM