我在迁移中收到此错误:
Person_EventModerator_Target :: Multiplicity在Role' Person_EventModerator_Target'中无效。在关系' Person_EventModerator'。由于Dependent Role属性不是关键属性,因此Dependent Role的多重性的上限必须为' *'。
以下是我的模型(注意:基本实体包含所有模型的主键):
public class EventModerator : BaseEntity
{
......
// foreign keys
public int PersonId { get; set; }
// associations
[ForeignKey("PersonId")]
public Person Person { get; set; }
}
public class Person : BaseEntity
{
public Person()
{
....
// association
public virtual EventModerator EventModerator { get; set; }
}
我的映射:
modelBuilder.Entity<Person>()
.HasOptional(e => e.EventModerator)
.WithRequired(e => e.Person);
这是1到0.1的关系。
有人可以指出我的错误吗?
答案 0 :(得分:0)
好的,这很有用,但坦率地说我不明白需要“.WithMany()”
internal static void Map(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<EventModerator>()
.HasRequired(e => e.Person)
.WithMany()
.HasForeignKey(e => e.PersonId)
.WillCascadeOnDelete(false);
}
答案 1 :(得分:0)
您的答案不会产生1到0.1的关系。在数据库的Person
表上生成了另一个密钥,该密钥可以为EventModerator_Id
。
要使用1到0.1,从属EventModerator
主键也必须是外键。
您可以在[Key]
上添加PersonId
属性。
[Key]
public int PersonId { get; set; }
或者,因为您有BaseEntity
可能具有派生Id
属性(默认情况下约定为主键),那么您只需要删除PersonId
属性并链接外键到Id
财产。
//public int PersonId { get; set; }
// associations
[ForeignKey("Id")]
public Person Person { get; set; }