1
我使用实体框架4.3具有设计简单:使用多列(复合)主键包含外键关系
public class Post
{
[Key]
public int ID { get; set; }
public string Text { get; set; }
public HashSet<PostTag> Tags { get; set; }
}
public class PostTag
{
public Post Post { get; set; }
[Key, Column(Order=0)]
[ForeignKey("Post")]
public int PostID { get; set; }
[Key, Column(Order=1)]
[MaxLength(50)]
public string Tag { get; set; }
}
所以,你可以看到一个帖子有多个标签,而那些标签使用PostID和标签的复合主键。
当我运行update-database
我得到:
Cannot define PRIMARY KEY constraint on nullable column in table 'PostTag'.
我已经试过应用[必需]属性POST和帖子ID。我试着将ForeignKey属性放在FK关系的另一边。我已经尝试应用Post的InverseProperty属性(它将错误更改为模糊的NullReferenceException - 这看起来像一个错误)。
通过删除被忽略的key属性,清除__MigrationHistory表,然后使用Update-Database创建初始迁移,您可以解决EF 4.3.1中的错误(如果您刚刚在4.3上,请先升级)初始-IgnoreChanges以最新的方式让它保持最新状态。事实上,你可以按照预期迁移。 – 2012-03-01 22:33:27