Ссылки на имена схем для таблиц в Entity Framework - PullRequest
6 голосов
/ 09 июня 2011

Как вы явно указываете 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");
}

Однако, когда он запускается, он говорит, что Invalid object name: dbo.Product.

Я пробовал:

config.ToTable("Production.Product");
//and
config.HasEntityName("Production");

но оба также терпят неудачу.

Ответы [ 2 ]

12 голосов
/ 09 июня 2011

ToTable имеет перегруженную версию, которая принимает два параметра: имя таблицы и имя схемы, поэтому правильная версия:

config.ToTable("Product", "Production");
0 голосов
/ 14 июля 2019

Схема таблицы также может быть указана с использованием аннотаций данных с использованием необязательного параметра «Схема» в атрибуте «Таблица».

using System.ComponentModel.DataAnnotations.Schema;

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