我在 Sqlserver 中有 3 个实体,我正在使用 Visual Studio 的向导进行映射
这三个实体是包类别和packages_categories,其中packages_categories 是多对多关系。映射这些实体后,我得到 2 个类,它们是类别和包,它们看起来像这样: public partial class Package { public Package() { this.Categories = new HashSet(); }
public string PackageSid { get; set; }
public string PackageName { get; set; }
public virtual ICollection<Category> Categories { get; set; }
}
公共部分类类别 { 公共类别() { this.Packages = new HashSet(); }
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public bool isDefault { get; set; }
public virtual ICollection<Package> Packages { get; set; }
}
而且我对多对多关系的实体(这是packages_categories之一)一无所获当我尝试获取类别包时,同样的事情。
问题是当我尝试更新一个包并向它添加类别时,该类别不仅会添加到实体 packages_categories 还会添加到类别 self
代码示例:
var categoriesList=List<Categoriy>();
categoriesList.Add(new Cateogry{
categoryname="catem",
IsDefault=false,
CategoryId=2332
});
var _packagesContext=new DBPackages();
_packagesContext.Add(new Packages{
packageSid="Sid blaaa.",
PackageName="TestPackage",
Categories=categoriesList
});
现在在这段代码中,一个包含一个类别的包将被添加到数据库中,但是如果该类别已经存在,则会抛出该类别已经存在的异常(假设它已经存在,这意味着它会尝试将其添加到类别自我),
我怎样才能解决这样的问题?我做错了什么:(非常感谢。