Ниже указаны мои доменные сущности
public class User
{
public int Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public DateTime? DateOfBirth { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string EmailAddress { get; set; }
public RoleType RoleType { get; set; }
}
public class Role
{
public int Id { get; set; }
public string Name { get; set; }
}
Я сделал RoleType как сложный тип (для получения отображения перечисления).Таким образом, я мог бы использовать что-то вроде context.Users.FirstOrDefault(u => u.RoleType.Value == (long)RoleTypes.Admin)
RoleTypes.Admin
- это сопоставление enum с сущностью Role
public class RoleType
{
public int Value { get; set; }
// And all the implicit operators to map with enum
}
И затем я создал отображение, используя свободный интерфейс API
public class RoleTypeMapping : ComplexTypeConfiguration<RoleType>
{
public RoleTypeMapping()
{
Property(r => r.Value)
.HasColumnName("RoleId"); // To make sure that in RoleType property of User EF entity maps to an int column [RoleId] in database (table [Users])
}
}
Используя fluent-api, я хочу создать ассоциацию внешнего ключа в таблице [Users] для [Users]. [RoleId], ссылаясь на [Role]. [Id].Пожалуйста, кто-нибудь может дать мне руководство для получения этого
Я устал добавлять свойство типа Role и создавать отображение через fluent-api, но EF создает другой столбец Role_Id и делает его внешним ключом.Я хочу, чтобы существующий столбец [RoleId] (сложный тип) был внешним ключом