我的数据库中存在复杂的关系。
Packages (packageID, package_name , .... )
VariantPackage (packageID, variantID)
Variant (variantID, variant_name, .... )
ProductVariant (variantID, productID)
Product (productID, product_name, .... )
(我认为你可以假设ID字段分别是Primary或Foreign?)
实体框架优雅地抓住了这个,因为如果这样做:
Package newPackage = new Package()
{
packageID = Guid.NewGuid()
etc . . .
};
Variant newVariant = new Variant()
{
variantID = Guid.NewGuid()
etc . . .
};
我在下面的这一行中获得了将该变体添加到该包
的选项newPackage.Variant.AddObject(newVariant);
_db.Package.AddObject(newPackage);
_db.SaveChanges();
现在当我在这两行中保存更改时,在所有3个表中创建条目?如果我正确设置了模型?
由于
答案 0 :(得分:0)
每个表都应该有一个insert方法(为表调用addobject)。并安排表格相关的插入方法的调用非常重要。 使用此代码将Variant插入DB:
public void InsertVariant(Variant entry)
{
var t = _db.Variant.CreateObject();
t.variant_name = entry.variant_name;
// and copy all field ...
// then
_db.Variant.AddObject(t);
_db.SaveChanges();
}
答案 1 :(得分:0)
我现在使用Code First Entity Framework:
public abstract class DbEntity
{
[Key, DatabaseGenerated(DatabaseGenerated.Identity)]
[HiddenInput(DisplayValue = false)]
public Guid Id { get; set; }
}
public class Package : DbEntity
{
public string Name { get; set; }
public List<Variant> Variants { get; set; }
}
public class Variant : DbEntity
{
public string Name { get; set; }
public List<Product> Products { get; set; }
}
public class Product : DbEntity
{
public string Name { get; set; }
}
然后,当创建它时,它应该创建适当的表和约束。