[英]MVC creating a list as a model property not being added as foreign key to DB with code first entity framework
我正在启动代码第一个EF MVC项目。 下面是我正在创建的消息模型的代码。 是否可以像下面在尝试的那样,创建一个包含标签列表(我创建的另一个模型)的标签属性?
public class Message
{
public int Id { get; set; }
public string Text { get; set; }
public byte[] Attachment { get; set; }
[Required]
public MessageBoard MessageBoard { get; set; }
[Required]
public virtual List<Tag> Tags { get; set; }
}
尝试执行update-database -verbose
命令后,我发现它没有将Tags
类添加到我的数据库中。 控制台显示此db命令以获取消息:
CREATE TABLE [dbo].[Messages] (
[Id] [int] NOT NULL IDENTITY,
[Text] [nvarchar](max),
[Attachment] [varbinary](max),
[MessageBoard_Id] [int] NOT NULL,
CONSTRAINT [PK_dbo.Messages] PRIMARY KEY ([Id])
)
如何在消息和标签之间创建这种外键关系?
我假设您与多对多关系可以重复使用现有标签。
首先,您必须在Tag类中添加对Message的引用
public virtual List<Message> Messages { get; set; };
然后,在模型配置类中,必须使用以下代码设置多对多关系:
modelBuilder.Entity<Message>()
.HasMany<Tag>(m => m.Tags)
.WithMany(t => t.Messages)
.Map(mt =>
{
mt.MapLeftKey("MessageID");
mt.MapRightKey("TagId");
mt.ToTable("MessagesTag"); //Name of table many to many
});
并且不要忘记在您的DBContext中添加类Tag。
public DbSet<Tag> Tag { get; set; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.