我必须遵循表格
[Table("TBL_UserVariant")]
public class UserVariant
{
[Key, Column(Order = 0)]
public int UserId { get; set; }
[Key, Column(Order = 1)]
public int VarId { get; set; }
public string Value { get; set; }
}
[Table("TBL_UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string eMail { get; set; }
}
我希望TBL_UserProfile引用所有TBL_UserVariant条目的列表,其中TBL_UserProfile :: UserId == TBL_UserVariant :: UserId
以下是我的目标的一个例子
[Table("TBL_UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string eMail { get; set; }
public UserVariant[] variants;
}
其中'UserProfile :: variants'应该包含一个项目列表,其中'TBL_UserProfile :: UserId == TBL_UserVariant :: UserId'
使用EF可以直接使用吗?或者,我应该实现一个包装器填充'UserProfile :: variants'〜手动〜?
答案 0 :(得分:0)
您只需向UserProfile实体添加导航属性即可。
[Table("TBL_UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string eMail { get; set; }
public virtual ICollection<UserVariant> UserVariants { get; set; }
}
答案 1 :(得分:0)
以下是您应该需要的。 EF将负责其余部分。
[Table("TBL_UserProfile")]
public class UserProfile
{
[Key]
public int UserId { get; set; }
public string eMail { get; set; }
public virtual ICollection<UserVariant> Variants { get; set; }
}
[Table("TBL_UserVariant")]
public class UserVariant
{
[Key]
public int VarId { get; set; }
public UserProfile User { get; set; }
public string Value { get; set; }
}
答案 2 :(得分:0)
我认为你要求的是你想要一个UserProfile
,映射到很多UserVariants
在这种情况下,您需要向UserProfile类添加一个集合。
public virtual ICollection<UserVariant> UserVariants { get; set; }
您还需要在UserVariant类上修复[Key]
属性,因为我认为它应该在VarId上。然后,您可以只指定导航属性
[Key]
public int VarId { get; set; }
public UserProfile User { get; set; }
修改强>
顺便说一下,你的命名约定已经到处都是。请勿使用TBL_
为表名添加前缀。大写所有属性/列。例如Email
不是eMail