引用实体框架中表的架构名称

发布于 2024-11-14 19:22:48 字数 641 浏览 7 评论 0原文

如何明确告诉 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浅忆 2024-11-21 19:22:48

ToTable 具有重载版本,它接受两个参数:表名称和架构名称,因此正确的版本是:

config.ToTable("Product", "Production");

ToTable has overloaded version which accepts two parameters: table name and schema name so correct version is:

config.ToTable("Product", "Production");
温暖的光 2024-11-21 19:22:48

还可以使用“Table”属性上的可选参数“Schema”使用数据注释来指定表架构。

using System.ComponentModel.DataAnnotations.Schema;

[Table("Product", Schema="Production")]
public class Product
{
    public int ProductID { get; set; }
    public decimal Price { get; set; }
}

The table schema can also be specified using data annotations using the optional parameter 'Schema' on the 'Table' attribute.

using System.ComponentModel.DataAnnotations.Schema;

[Table("Product", Schema="Production")]
public class Product
{
    public int ProductID { get; set; }
    public decimal Price { get; set; }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文