Выбор данных на основе частичного составного ключа в Entity Framework Core - PullRequest
0 голосов
/ 12 мая 2019

Используя Entity Framework Core (сначала код), я пытаюсь выбрать данные из существующей таблицы на основе составного ключа.Я не могу изменить определения базы данных.

У одной таблицы есть составной ключ, а у другой таблицы только один столбец в составном ключе.Я думаю, что могу продемонстрировать это, используя Пример внешнего ключа Microsoft , единственное изменение будет то, что CarState не существует на RecordOfSale (или становится NotMapped).

Вопрос в том, как использовать Entity Framework Core 2.2, как выбрать на основе частичного ключа, а не полного составного ключа (если это вообще возможно?).Я пытался использовать постоянные значения, виртуальные столбцы, вычисляемые свойства.Существующий код базы данных, использующий SQL, определяет постоянное значение в предикате для отсутствующего столбца (но это зависит от того, какие запросы SQL выполняются в зависимости от того, какое постоянное значение выбрано, это значение не содержится в таблице / поле), например,

WHERE CarState = 'OHIO'

Надеюсь, это имеет смысл, пример Microsoft приведен ниже:

class MyContext : DbContext
{
    public DbSet<Car> Cars { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Car>()
            .HasKey(c => new { c.State, c.LicensePlate });

        modelBuilder.Entity<RecordOfSale>()
            .HasOne(s => s.Car)
            .WithMany(c => c.SaleHistory)
            .HasForeignKey(s => new { s.CarState, s.CarLicensePlate });
    }
}

public class Car
{
    public string State { get; set; }
    public string LicensePlate { get; set; }
    public string Make { get; set; }
    public string Model { get; set; }

    public List<RecordOfSale> SaleHistory { get; set; }
}

public class RecordOfSale
{
    public int RecordOfSaleId { get; set; }
    public DateTime DateSold { get; set; }
    public decimal Price { get; set; }

    public string CarState { get; set; }
    public string CarLicensePlate { get; set; }
    public Car Car { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...