0

我的数据库中有一个复杂的关系。

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();

现在,当我 SaveChanges 会在这两行中创建所有 3 个表中的条目吗?如果我正确设置了模型?

谢谢

4

2 回答 2

0

每个表都应该有一个插入方法(为表调用 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();
}
于 2012-06-23T10:20:25.147 回答
0

我现在使用 CodeFirst 实体框架:

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; }
}

然后,当它被创建时,它应该创建适当的表和约束。

于 2013-04-25T09:44:33.027 回答