gpt4 book ai didi

c# - 映射冲突 Entity Framework

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:53 24 4
gpt4 key购买 nike

我正在使用 EF codeFirst 来创建我的数据库。我有 2 个模型 Blog 和 Message 具有以下字段,我遇到了映射冲突,因为 Message 表有一个指向 blog 表的外键,而且 blog 表有一个外键,其中 lastMessage 发布到 Message 表。

    public class Blog
{
public int BlogId { get; set; }
public string Topic{ get; set; }

public virtual Message LastMessage{ get; set; }
}

public class Message
{
public int MessageId { get; set; }
public string Text { get; set; }

public virtual Blog Blog { get; set; }
}

public class BlogMap : EntityTypeConfiguration<Blog>
{
public BlogMap()
{
// Primary Key
HasKey(t => t.BlogId);

// Properties
Property(t => t.BlogId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

// Table & Column Mappings
ToTable("Blog");
Property(t => t.Topic).HasColumnName("Topic").HasMaxLength(100);

// Relationships
HasOptional(t => t.LastMessage)
.WithRequired(t => t.Blog)
.Map(t => t.MapKey("LastMessageId"));
}
}

public class MessageMap : EntityTypeConfiguration<Message>
{
public MessageMap()
{
// Primary Key
HasKey(t => t.MessageId);

// Properties
Property(t => t.MessageId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

// Table & Column Mappings
ToTable("Message");
Property(t => t.Text).HasColumnName("Text").HasMaxLength(100);

// Relationships
HasRequired(t => t.Blog)
.WithOptional()
.Map(t => t.MapKey("BlogId"));
}
}

异常(exception):

{“在类型‘MyProject.DAL.Model.Message’上声明的导航属性‘Blog’已配置了冲突的映射信息。”

最佳答案

问题是您已经两次映射 Message 类的“Blog”属性。在 BlogMap 类中,您可以在此处定义它:

HasOptional(t => t.LastMessage)
.WithRequired(t => t.Blog)
.Map(t => t.MapKey("LastMessageId"));

这告诉 EF Blog 属性是 LastMessageId 关系的“返回”端。

在 MessageMap 类中,您在这里定义它:

    HasRequired(t => t.Blog)
.WithOptional()
.Map(t => t.MapKey("BlogId"));

这表示 Blog 属性表示 BlogId 关系。

我怀疑第二个是你真正想要的,第一个关系的 WithRequired() 行应该替换为 .WithOptional() ,如下所示:

   HasOptional(t => t.LastMessage)
.WithOptional()
.Map(t => t.MapKey("LastMessageId"));

关于c# - 映射冲突 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25810949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com