我一直在使用C#中的Entity框架试图弄清楚如何将两个表连接在一起。我在这里找到了关于如何执行此操作的http://msdn.microsoft.com/en-us/data/jj715646.aspx的引用。问题是,这两个表具有不同步的PK,这似乎是一个要求。我以前从来不必担心从数据库中的两个表同步PK。我知道我可以在一张桌子上关闭身份插入,但我看到很多人的评论,这是一个非常糟糕的主意。如果我不应该这样做,那么如何在每个表中完成同步PK?
我在数据库中有两个表:
用户
LockedFlags(锁定用户的字段不被编辑)
我很好奇为什么人们删除表上的标识插件是个坏主意...如果我依靠MSSQL分配PK然后我可以在插入记录时看到一个实例进入数据库,第二个表写入在处理多个写入时可以获得不同的值...
答案 0 :(得分:1)
听起来你在LockedFlags表中有孤立的行,就像一个用户ID指向已被删除的用户的行。根据关系的设置方式,反之亦然。
如果你有一个实体,其中2个表合并为一个类,加载实体集将查询两个表并需要匹配的行对。
您的LockedFlags可能有一个用户属性,它正在尝试加载,但在用户表中找不到。
表格选项: 注意:我使用的是MSSQL等价物,因为我不知道MYSQL。
有关您的数据模型的评论: 我不知道MYWSQL如何处理记录锁定,但如果它像MSSQL一样,你不必担心手动处理。
如果您打算按原样使用,我强烈建议重新查看您的数据模型。如果你真的想手动锁定单个行字段,那么只使用一个表是最好的吗?
编辑:
ALTER TABLE LockFlags ADD CONSTRAINT
FK_LockFlags_User FOREIGN KEY
(
UserID
) REFERENCES User
(
pkID
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO