Я немного новичок в Entity Framework. У меня есть класс, определенный следующим образом, соответствующий таблице базы данных с составным внешним ключом, состоящим из двух столбцов: GroupID
и CompanyID
, а также третьего внешнего ключа с именем RegionID
:
[Table("GroupMembers")]
public class GroupMember
{
[Key, ForeignKey("GroupID"), Column(Order = 1)]
public int GroupCompanyID { get; set; }
[Key, ForeignKey("CompanyID"), Column(Order = 2)]
public int MemberCompanyID { get; set; }
[Column("MemberCode")]
public string MemberCompanyCode { get; set; }
[Column("RegionID")]
public int RegionId { get; set; }
}
Я попытался следующий запрос, чтобы получить MemberCode
, когда у меня есть значения для GroupID
и MemberCompanyID
:
var GroupMember = await repository.GroupMembers
.FirstOrDefaultAsync(x => x.MemberID == memberId &&
x.CompanyID == manufacturerId);
Я получаю следующее исключение:
Свойство 'GroupID' нельзя настроить как свойство навигации. Свойство должно иметь допустимый тип сущности, а свойство должно иметь неабстрактный метод получения и установки. Для свойств коллекции тип должен реализовывать ICollection, где T является допустимым типом сущности
Я думаю, что я что-то упускаю в методе OnModelCreating
, я попробовал следующее, но это не сработало:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<GroupMember>()
.HasKey(gm => new {gm.GroupID, gm.MemberID});
}
Следует также отметить, что оба GroupID
и MemberID
оба ссылаются на один и тот же столбец первичного ключа, который называется OrganizationID
в таблице с именем Organizations
, просто разные значения. Я не уверен, влияет ли это на что-нибудь.
Кто-нибудь может указать мне правильное направление? Спасибо!