【问题标题】:relationship one to one EntityFramework error关系一对一的EntityFramework错误
【发布时间】:2013-05-02 21:04:13
【问题描述】:

我在 sql server 2008 中创建了 2 个表

表 1:用户(用户 ID、姓名、名字、登录名、密码...),PK:用户 ID
表 2 : SessionUser(UserID, Date, Adress) , PK : UserID

两个表的关系在sql server 2008中设置,1对1的关系,外键在表SessionUser(FK:userID)
用户表中有用户(全行)
当我尝试在会话表中添加会话时,它显示了这个错误:

DistributionSSEntities.SessionUser”中的实体参与“FK_SessionUser_User”关系。找到 0 个相关的“用户”。预计有 1 个“用户”。

代码:

DistributionSSEntities db = new DistributionSSEntities();
SessionUser sessionUser = new SessionUser();

            sessionUser.UserID = 12; // this ID existe in User table
            sessionUser.Date = "12-12-2012";
            sessionUser.AdressIP = "192.168.1.1";


            db.AddToSessionUser(sessionUser);
            db.SaveChanges();

如何解决这个问题 谢谢。

【问题讨论】:

标签: c# .net entity-framework


【解决方案1】:

仅仅设置UserID 是不行的。

您可以:
- 从数据库中选择用户,然后设置User 属性
- 使用所需的 ID 创建一个新的 User 并将其附加到上下文
- 或者,直接设置外键引用:

sessionUser.UserReference.EntityKey = new System.Data.EntityKey(sessionUser.UserReference.RelationshipSet.EntityContainer.Name + "." + sessionUser.UserReference.TargetRoleName, "ID", id);

有点长,但是你可以把它做成一个扩展方法,因为它派上用场了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-20
    • 2012-08-27
    • 1970-01-01
    • 2017-01-09
    • 2023-02-14
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多