Entity Framework Entity, как установить идентификатор и ограничение внешнего ключа? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть несколько сущностей Entity Framework 6, сгенерированных из базы данных первой базы данных.Они похожи на приведенный ниже код.

Обратите внимание, что есть поле CustomerID и Customer, где поле Customer взято из FK_Contact_Customer.

.с экземпляром этого объекта в C #, я должен установить CustomerID или Customer?И как только я установлю одно свойство, как мне сделать другое согласованным?Это ручной процесс?Есть ли для этого помощник Entity Framework?

Например, если у меня есть экземпляр сущности Contact и экземпляр сущности Customer, как правильно связать Contact.Customer сCustomer экземпляр?Я ожидаю, что после того, как это будет сделано, свойства CustomerID и Customer будут соответствовать ассоциации.

ПРИМЕЧАНИЕ. Вероятно, это повторяющийся вопрос, который я искал, но не смог найтиответ на этот (основной) вопрос.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace MyProject.DAL.Context
{
    using System;
    using System.Collections.Generic;

    public partial class Contact
    {
        public int ID { get; set; }
        public int CustomerID { get; set; }
        public string Contact1 { get; set; }
        public string Email { get; set; }
        public string ContactTitle { get; set; }

        /// <summary>
        /// FK_Contact_Customer
        /// </summary>
        public virtual Customer Customer { get; set; }
    }
}

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Вы должны аннотировать свойство клиента так, чтобы оно выглядело следующим образом.

[ForeignKey("CustomerID")]
public virtual Customer Customer { get; set; }

Свойство CustomerID не нужно устанавливать вручную, если вы используете свойство с внешним ключом.

0 голосов
/ 03 апреля 2019

Или вы можете использовать FluetAPI с миграциями для сопоставления ваших сущностей с базой данных

Чтобы не создать класс с именем ContactConfig, этот класс создаст все отношения этой сущности.

public class ContactConfig: EntityTypeConfiguration<Contact>
 {
    public ContactConfig()
    {

        HasKey(c => c.ID);

        Property(c => c.Contact1 )
            .IsRequired();

        Property(c => c.Email )
            .IsRequired();

        Property(c => c.ContactTitle )
            .IsRequired();

        //Here is the secret
        HasRequired(c => c.Costumer)
            .WithMany(c => c.Contact)
            .HasForeignKey(c => c.CustomerID);
  }
}

CostumerID - это просто свойство навигации, которое будет внешним ключом класса Costumer. Вы должны связать идентификатор класса Costumer со свойством CostumerID в классе Contact.

С помощью этого параметра вы просто вызываете свойство CostumerID, когда вам нужно связать клиента с контактом

После этого просто введите Update-Database в консоли диспетчера пакетов.

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