0
我想弄清楚如何防止实体框架在我的一个表上创建复合主键。我有以下两个实体:阻止实体框架创建复合主键
public class Entry
{
public Int64 EntryID { get; set; }
public string UserName { get; set; }
public string EntrySubject { get; set; }
}
public class Revision
{
public Int64 RevisionID { get; set; }
public string RevisionDescription { get; set; }
public Int64 EntryID { get; set; }
public Entry Entry { get; set; }
}
当实体框架生成数据库,修订表得到由于RevisionId和的EntryID的复合主键。我希望修订表的主键只能是RevisionID。有没有办法做到这一点? (我使用实体框架4.3与SQL Server CE,如果有差别。)
我试过两个那些方法,但既不方法奏效。我有一个简单的测试应用程序只有这两个类,我只是确认添加键注释不起作用。我仍然得到一个复合键。 –
我创建了一个测试应用程序(发布代码),但没有得到相同的结果 - 它按照预期创建了一个包含键的表。你能发布你的测试应用程序吗? –
啊,我得到了两个不同的结果。当我使用你的代码并且只允许SqlExpress创建数据库时,我得到和没有组合主键一样的结果。但是,当我在你的代码中使用SQL Server CE并使用连接字符串设置指定CE数据库(.sdf)时,我得到了组合键。所以这个问题似乎与SQL Server CE(我使用EntityFramework.SqlServerCompact NuGet包,v4.3.5)。所以我想我的问题变成了,使用CE时可以防止这种行为。但是,我会检查你的答案,因为它导致遇到问题的根源。谢谢。 –