开发者

Entity Framework entity integrity

I want to validate each entity when saving. That is, I have some custom C# function in each entity class that validates the data.

How can I do that? I don't want to use database constraints because they开发者_C百科 cannot express my constraints.

Should I implement some interface???


Entity framework 3.5 and 4.0 offers even called SavingChanges. Entity framework 4.0 and 4.1 has SaveChanges method virtual (as already mentioned).

You can either override method or use event handler and write code like this for 3.5 and 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();
}

In DbContext API (EF 4.1) you must use

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();
}

You can use custom interface implemented by your entities which will expose Validate method.


The ObjectContext.SaveChanges method is virtual since EF 4.0. Overwrite this method and validate all entities there.

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

Iterate over all entities (not the deleted ones :)) in the context. Use the ObjectStateManager to gain access to the entities in the context.

Hope this helps and best regards,

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜