在EF6中确定DbSet对象的SQL架构

时间:2014-01-05 21:42:55

标签: c# sql .net entity-framework orm

我有代码

const string schamaName = "schema";

public class Data: DbContext
{
    public DbSet<Offer> Offers {get;set;}
    public DbSet<Place> Places{get;set;}
}

public class Offer
{
    public int Id {get;set;}
    public string Name {get;set;}
    IEnumerable<Place> Places {get;set;}
}

public class Place
{
    public int Id {get;set;}
    public string Name {get;set;}
}

这段代码将为我生成三个表,一个用于Offer,一个用于Place,一个用于在两个前面的表之间进行映射。
现在我得到了想要的结构,但是在dbo模式中。
我想放表在“提供”模式中提供和映射,“dict”模式中的第三个表 我怎么能这样做?

我用的是EF6
我更喜欢在OnCreatingModel方法中编写一些代码,而不是使用attibutes

1 个答案:

答案 0 :(得分:4)

我相信您应该将优惠作为虚拟收藏品包含&lt;&gt;而不是DbSet&lt;&gt;:

public class Data
{
    public int Id {get;set;}
    public string Name {get;set;}
    public virtual Collection<Offer> Offers {get; set;}
}

此外,如果您的架构真的是“架构”而不是“dbo”,那么您需要按如下方式装饰您的类:

[Table("Data", Schema="schema"]
public class Data
{
...

或者如果您更喜欢OnModelCreating():

modelBuilder.Entity<Data>().ToTable("Data", "schema");