gpt4 book ai didi

entity-framework - 使用 EF 4.1 code first fluent-api 为复杂类型创建外键

转载 作者:行者123 更新时间:2023-12-04 06:10:05 25 4
gpt4 key购买 nike

以下是我的域实体

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; }
}

我做了 角色类型 作为 复杂类型 (实现枚举映射)。所以我可以使用类似 context.Users.FirstOrDefault(u => u.RoleType.Value == (long)RoleTypes.Admin) 的东西 RoleTypes.Admin是到 Role 实体的枚举映射
public class RoleType
{
public int Value { get; set; }

// And all the implicit operators to map with enum
}

然后我使用 fluent 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] 列(复杂类型)作为外键

最佳答案

这不可能。如果要与 Role 表关联,则必须放弃类似枚举的方法并定义 Users 实体,例如:

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 Role Role { get; set; }
}

首先,关系不是枚举,复杂类型不能包含导航属性(以及外键)。

关于entity-framework - 使用 EF 4.1 code first fluent-api 为复杂类型创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7875907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com