在 EF6 中确定 SQL 架构到 DbSet 对象
Posted
技术标签:
【中文标题】在 EF6 中确定 SQL 架构到 DbSet 对象【英文标题】:Determine SQL schema to DbSet object in EF6 【发布时间】:2014-01-05 21:42:54 【问题描述】:我有代码
const string schamaName = "schema";
public class Data: DbContext
public DbSet<Offer> Offers get;set;
public DbSet<Place> Placesget;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 模式中。我想把表 Offer 和“offer”模式中的映射,“dict”模式中的第三个表 我该怎么做? 我使用 EF6。 我更喜欢在 OnCreatingModel 方法中编写一些代码而不是使用属性
【问题讨论】:
【参考方案1】:我认为您应该将 Offers 包含为虚拟集合,而不是 DbSet:
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");
【讨论】:
我已经编辑了答案以包括 OnModelCreating() 。如果您的表在 dbo 架构中,那么您无需手动覆盖代码中的架构。 我提出的问题不是我想要的代码。你能再看看我的问题吗?感谢您的时间和关注 1) 您应该声明“public virtual ICollection以上是关于在 EF6 中确定 SQL 架构到 DbSet 对象的主要内容,如果未能解决你的问题,请参考以下文章
EF6 中的这个 Test DBSet 类可以适应 EF Core 吗?