如何将属性设置为与代码的一对多关系?

时间:2014-02-26 13:54:47

标签: c# .net entity-framework

当我尝试保存对象时,实体框架会抛出异常。可能是因为多对一关系而且它不知道如何插入。

型号:

public class Photo
{
    public Guid Id {get;set;}
    public List<Tag> Tags {get;set;}
}

public class Tag
{
    public Guid Id {get;set;}
    public string TagText {get;set;}
}

如果我不尝试将两张或多张照片链接到同一标签,这样可以正常工作。

示例:

Photo photo1 = new Photo();
Photo photo2 = new Photo();
Tag tag = new Tag() { TagText = "#EntityFramework"};
photo1.Tags.Add(tag);
photo2.Tags.Add(tag);
_content.SaveChanges(); //Exception 

任何人都知道如何使用代码正确设置它?


更新

例外: 附加信息:违反了多重约束。关系“X”的角色“X”具有多重性1或0..1。


更新

添加迁移生成的脚本

 CreateTable(
            "dbo.Tags",
            c => new
                {
                    Id = c.Guid(nullable: false, identity: true),
                    TagText = c.String(),
                    Photo_Id = c.Guid(),
                })
            .PrimaryKey(t => t.Id)
            .ForeignKey("dbo.Photos", t => t.Photo_Id)
            .Index(t => t.Photo_Id);

1 个答案:

答案 0 :(得分:1)

还要在Tag中为多对多人定义一个集合属性:

public class Tag
{
    ...
    public ICollection<Photo> Photos { get; set; }
}
相关问题