簡體   English   中英

實體框架重新創建新記錄

[英]Entity Framework recreating new record

我在創建新記錄時也會遇到這種情況,它也會重新創建它的關聯。

User newUser = new User();
newUser.UserGroupID = 1;
newUser.UserGroup = UserGroup.Find(1);

using (InventorySystemEntities context = new InventorySystemEntities(new ConfigurationManager().ConnectionString))
{
    context.Users.Add(newUser);
    context.SaveChanges();
}

當我保存它時,它會創建一個新的User記錄,一個新的UserGroup記錄也是如此。

您為UserGroup.Find()和Users.Add()使用了不同的上下文,這是不可行的-為這兩者使用相同的上下文,它將可以正常工作。

using (InventorySystemEntities context = new InventorySystemEntities(new ConfigurationManager().ConnectionString))
{
    var newUser = new context.Users.CreateNew();
    newUser.UserGroup = context.UserGroup.Find(1);

    context.Users.Add(newUser);
    context.SaveChanges();
}

您需要告訴上下文您的實體是現有實體:

User newUser = new User();
newUser.UserGroupID = 1;
newUser.UserGroup = UserGroup.Find(1);

using (InventorySystemEntities context = new InventorySystemEntities(new ConfigurationManager().ConnectionString))
{
    context.UserGroups.Attach(newUser.UserGroup);
    context.Users.Add(newUser);
    context.SaveChanges();
}

這是與該問題相同的問題 可以對Find和SaveChanges使用相同的上下文,或者,如果由於某種原因不能這樣做,請使用Attach()將找到的UserGroup附加到新的上下文。

暫無
暫無

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

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