2009-08-12 55 views
0

我使用guids作爲我的實體的PK。 由於EF不支持newid()SQL語句,因此我在創建方法中強制使用Guid.NewGuid()Entity Frmwk pb:在當前上下文中搜索'added'實體

這是我的問題: 我有一個聚集的唯一約束(2個字符串,而不是PK)表。

我跑在其中同名但操作並添加/鏈接實體相同 EF方面的一些代碼等

是否可以搜索在我的上下文「加入」狀態的實體?;也就是說在我的上下文中,但尚未插入到我的數據庫中。

爲了避免引發SQL唯一約束,我必須知道實體是否已經在上下文中「排隊」,並重新使用它而不是創建新的Guid(...)和一個不同的實體!:()

回答

1

這篇文章救了我:):

http://geekswithblogs.net/abhijeetp/archive/2009/07/23/retrieving-added-entities-from-the-objectstatemanager-to-avoid-duplication.aspx

var stateEntries = context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EtityState.Modified | EntityState.Unchanged); 
    var roleEntityEntries = stateEntries.Select(s => s.Entity).OfType<Role>(); 
    roleEntity = roleEntityEntries.FirstOrDefault(r => r.RoleName.Trim().ToLower() == roleName.Trim().ToLower()); 
    if (roleEntity == null) 
    { 
     return new Role { RoleName = roleName }; 
    }