引用实体框架中表的架构名称
如何明确告诉 EF 某个表位于特定架构中?
例如,AdventureWorks 数据库定义 Production.Product 表。当使用OnModelCreating
方法时,我使用以下代码:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
EntityTypeConfiguration<Product> config = modelBuilder.Entity<Product>();
config.HasKey(p => p.ProductID);
config.Property(p => p.Price).HasColumnName("ListPrice");
config.ToTable("Product");
}
但是,当它运行时,它说无效的对象名称:dbo.Product
。
我已经尝试过:
config.ToTable("Production.Product");
//and
config.HasEntityName("Production");
但都失败了。
How do you explicitally tell EF that a table lies in a specific schema?
For example, the AdventureWorks database defines the Production.Product table. When using the OnModelCreating
method, I use the following code:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
EntityTypeConfiguration<Product> config = modelBuilder.Entity<Product>();
config.HasKey(p => p.ProductID);
config.Property(p => p.Price).HasColumnName("ListPrice");
config.ToTable("Product");
}
However, when it is run, it says it Invalid object name: dbo.Product
.
I have tried:
config.ToTable("Production.Product");
//and
config.HasEntityName("Production");
but both fail as well.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
ToTable
具有重载版本,它接受两个参数:表名称和架构名称,因此正确的版本是:ToTable
has overloaded version which accepts two parameters: table name and schema name so correct version is:还可以使用“Table”属性上的可选参数“Schema”使用数据注释来指定表架构。
The table schema can also be specified using data annotations using the optional parameter 'Schema' on the 'Table' attribute.