2016-08-18 4 views
0

Я хотел бы добавить внешний ключ по уникальному атрибуту, отличному от нуля, во второй таблице. Вот как это выглядит:Entity Framework FK по уникальному свойству индекса

public class T_AlarmTresholds 
    { 
     [Key] 
     public int Id { get; set; } 
       .... 
       ....     
     public Guid MeasurementGuid { get; set; } 

     [ForeignKey("MeasurementGuid")] 
     public virtual T_Measurements Measurement { get; set; } 
    } 


public partial class T_Measurements 
    { 
     public int Id { get; set; } 
     [Index("UC_Guid", IsUnique = true)] 
     public Guid GUID { get; set; } 
    } 

Вот модель строитель:

modelBuilder.Entity<T_Measurements>() 
       .HasMany(x => x.T_AlarmTresholds) 
       .WithRequired(x => x.Measurement) 
       .HasForeignKey(x => x.MeasurementGuid); 

Entity Framework бросает ошибку при SQL Server принимает это решение. Здесь ошибка в Visual Studio во время отладки:

{ "Один или несколько проверок были обнаружены ошибки в ходе модели генерация: \ г \ п \ г \ nT_Measurements_T_AlarmTresholds_Source_T_Measurements_T_AlarmTresholds_Target: : Типы всех свойств в зависимых роли ссылочное ограничение должно быть таким же, как соответствующие типы свойств в основной роли . Тип свойства «MeasurementGuid» для объекта «T_AlarmTresholds» не соответствует типу идентификатора свойства для объекта «T_Measurements» в ссылочное ограничение 'T_Measurements_T_AlarmTresholds'. \ r \ n "}

ответ

0

Вы не помещайте внешний ключ на виртуальном объекте сами вам нужно создать новое свойство в T_AlarmTresholds:

public int T_MeasurementsId{get; set;} 

выступать в качестве внешнего ключа. Затем свойство зависимостей (виртуальное) автоматически связывается. Вам также необходимо удалить атрибут ForiegnKey из виртуального свойства.


Edit: Просто заметил, что ваш код не использует столбец Id в качестве первичного ключа, но вместо этого использует Guid, так что вы вместо этого хотите добавить атрибут внешнего ключа к MeasurementGuid собственности.

+0

Действительно, база данных уже разработана с использованием guid для зависимостей внешнего ключа – miechooy

+0

@miechooy см. Мое обновление - основные точки - вы не ставите атрибут внешнего ключа в свойство зависимостей. –

Смежные вопросы