Как я могу охотно загрузить свойство навигации при объединении столбцов с различными типами с помощью Entity Framework Core? - PullRequest
0 голосов
/ 03 сентября 2018

У нас есть устаревшая база данных, и у нас есть требования для взаимодействия с этой базой данных только для чтения, чтобы получить некоторые данные (мы не можем изменить ее схему).

Существуют таблицы, которые не связаны друг с другом с помощью FK, но используют значения столбца, и, к сожалению, первичный ключ и связанный столбец в зависимой таблице имеют разные типы данных (ex char и nvarchar).

Использование Entity Framework Core Я написал несколько сопоставлений, например:

EntityTypeBuilder<Supplier>.HasMany(x => x.CatalogueItems)
        .WithOne(x => x.Supplier)
        .HasForeignKey(x => x.Vendor);

Но когда я пытаюсь загружать навигационные свойства, используя Включить метод:

dbContext.CatalogueItems.Include(x => x.Supplier).FirstOrDefault();

Я получаю поставщика как ноль, и когда я пишу его с использованием проекции, я получаю данные поставщика:

dbContext.CatalogueItems.Select(x => new {
                               x.ItemCode,
                               x.Supplier 
                        }).FirstOrDefault();

Подскажите, пожалуйста, как мне настроить его, чтобы получить свойства навигации с помощью Включить?

Edit:

Startup.cs:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<MyDBContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("MyConnection")));

        services.AddIdentityCore<User>()
        .AddEntityFrameworkStores<MyDBContext>()
        .AddDefaultTokenProviders();


        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        // Add application services.

    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
            app.UseHttpsRedirection();
        }

        app.UseMvc();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...