使用流畅的api以编程方式指定表的外键

时间:2011-08-19 13:58:21

标签: c# linq entity-framework linq-to-entities

嗨是否有可能使用实体....将foriegnkey分配给表。

请参阅此问题以澄清.. how do add a single entry for two tables using linq to entities

让我解释清楚.....

      i have a product table    product_id
                                product_name 
                                product_description
                                category_id


                                category table
                                category_id
                                category_name 

遗憾的是,在创建表时,将category_id指定为外键是不可能的,实体表自己将category_id作为列而不是外键

所以..我想将此指定为外键,以便...可以通过编程方式指定为外键  任何人都可以使用流畅的api指定foreignkey的示例代码

2 个答案:

答案 0 :(得分:1)

如果您正在使用EntityFramework 4.1,则可以使用Fluent API,它允许您指定键名和其他关联属性。

答案 1 :(得分:0)

以下是我在EF 4.1 CodeFirst中如何做到这一点的示例。我想,你可以使用非常相似的方法。

public class P
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Desc { get; set; }
    public string CategoryId { get; set; }
}

public class C
{
    public string Id { get; set; }
    public string Name { get; set; }
}

public class ProductsContext : DbContext
{
    public DbSet<P> Products { get; set; }
    public DbSet<C> Categories { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<P>().HasRequired(p => p.CategoryId).WithRequiredDependent();
    }
}

在OnModelCreating中,您可以告诉上下文,即使在DB中没有这样的关系,也希望如何设置关系。