У меня есть класс:Как указать основной конец 1-1 отношений в коде первого отображения
public partial class CanteenTerminal : XTimeEntity
{
public virtual Terminal Terminal { get; set; }
public short TerminalId { get; set; }
}
и его отображение класса:
public CanteenTerminalMap()
{
// Primary Key
HasKey(t => t.Id);
// Table & Column Mappings
ToTable("CANTEENTERM");
Property(t => t.Id).HasColumnName("TERM_CODEID");
// Relationships
HasRequired(t => t.Terminal)
.WithOptional(t => t.CanteenTerminal);
}
У меня есть класс Terminal
:
public partial class Terminal : XTimeEntity
{
public Terminal()
{
ControllerInterfacePointers = new List<ControllerInterfacePointer>();
TerminalParameters = new List<TerminalParameter>();
}
public string Name { get; set; }
public string Version { get; set; }
public short Enabled { get; set; }
public virtual CanteenTerminal CanteenTerminal { get; set; }
public short CanteenTerminalId { get; set; }
public virtual ICollection<ControllerInterfacePointer> ControllerInterfacePointers { get; set; }
public virtual ICollection<TerminalParameter> TerminalParameters { get; set; }
}
И его отображение файла:
public TerminalMap()
{
// Primary Key
HasKey(t => t.Id);
Property(t => t.Name)
.IsRequired()
.HasMaxLength(30);
Property(t => t.Version)
.HasMaxLength(8);
// Table & Column Mappings
ToTable("TERMINAL");
Property(t => t.Id).HasColumnName("TERM_CODEID");
Property(t => t.Name).HasColumnName("TERM_NAME");
Property(t => t.Version).HasColumnName("TERM_VERSION");
Property(t => t.Enabled).HasColumnName("TERM_ENABLED");
Ignore(t => t.MasterId);
Ignore(t => t.IsActive);
HasOptional(t => t.CanteenTerminal)
.WithRequired(t => t.Terminal);
}
Всякий раз, когда создается модель данных, то есть когда я запускаю тестовый запрос, я получаю следующую ошибку. Я получаю это для нескольких отношений один к одному, и я только что удалил эти свойства от объектов временно, чтобы избежать ошибок от объектов, которые меня еще не интересуют.
Невозможно определить главный конец связь между типами «XTime.Data.CanteenTerminal» и «XTime.Data.Terminal». Основной конец этой ассоциации должен быть явно сконфигурирован с использованием либо свободно распространяемого API, либо аннотаций данных.
Как я могу определить главный конец отношений?
После «с запросом (t => t.Terminal)» .withkey (- укажите здесь ключ). Извините, у меня нет инструментов для тестирования, но я считаю, что я эта проблема была решена следующим образом. – Tsasken
После фразы 'WithRequired()' в свободной цепочке отсутствует опция 'WithKey'. – ProfK
Какую версию EF вы используете? Эта [ссылка] (http://msdn.microsoft.com/en-us/data/jj591620.aspx#RequiredToRequired) может быть полезна, хотя я сомневаюсь, что она применима ко всем версиям EF. Если он не поддерживается, вы будете искать что-то вроде 'HasOptional (t => t.CanteenTerminal) .WithMany(). HasForeignKey (t => t.CanteenTerminalId)'. –