在开始时,我不得不说我不知道它是否必须是多对多的关系。
让我说我有三个班级:
用户信息,其中包含一些基本的用户信息,例如地区,城市
public class UserDetails
{
public int Id{get;set;}
public string City{get;set;}
public strng Region{get;set;}
}
下一个类是UserDetailsDictionary
public class UserDetailsDictionary
{
public int Id{get;set;}
public string Name{get;set;}
public string DetailsType{get;set;}
}
此类将包含以下值:
Name = "football", detailsType="interests",
Name = "basketball", detailsType="interests",
Name = "brown", detailsType="eyes",
Name = "green", detailsType="eyes"
最后一个类应包含有关将UserDetails与Dictionary和Values连接的信息:
public class JoiningClass
{
public UserDetails UserDetails{get;set;}
public UserDetailsDictionary DictionaryItem{get;set;}
public bool Value{get;set;}
}
此类中的值应类似于:
(1,1,0)
(1,1,1)(first user like basketball)
(1,2,0)(first user does not have brown eyes)
(2,1,1) (second user likes football)
在代码中,我想从两种方式检查值:
UserDetailsDictionary type;
...
var val1 = _dbContext.UserDetails.Where(x=> x.DictionaryItem.Id == type.Id).Value;
以及其他方式
UserDetails ud;
...
var allDetailsOfUser = _dbContext.UserDetailsDictionary.ToArray();
而且,假设我想用棕色的眼睛找到所有用户(userDetails):
var dictionaryItem = _dbContext.UserDetailsDictionary.Where(x=>x.Name == "eyesColor").SingleOrDefault();
var userDetails = _dbContext.JoiningClass...?
我应该如何创建这些类? 如何在DbContext类中创建与实体框架(核心2.0)的正确关系?
答案 0 :(得分:1)
让我知道这是否对您有用
我建议您将这些表归一化为
1。]第一个模型和表列
public class UserDetails
{
public int UserId{get;set;}
public string UserName{get;set;}
public string City{get;set;}
public strng Region{get;set;}
}
2。]第二个模型和表列
public class UserDetailsDictionary
{
public int DictId{get;set;}
public string InterestName{get;set;}
public string DetailsType{get;set;}
}
3。]用于存储数据的第三张表
public class UserData
{
public int UserId{get;set;}
public int DictonaryId{get;set;}
public bool _value {get;set;}
}
我假设您在问题中所显示的数据都存储在数据库中
(1,1,0)
(1,1,1)(第一个用户喜欢篮球)
(1,2,0)(第一个用户没有棕色眼睛)
(2,1,1)(第二位用户喜欢足球)
现在让我们举一个例子
(2,1,1)(第二位用户喜欢足球)
ID为2的用户拥有
Blockquote
对足球感兴趣(ID为1的兴趣)
现在从api中,您可以返回匿名类型
var m =(from data in _dbContext.UserData
Join details in _dbContext.UserDetails on data.UserID equals details.UserID
Join dict in _dbContext.UserDetailsDictionary on data.DictionaryID equals dict.DictID
//where Condition if required
select new {
UserName=details.UserName,
Interest= dict.IntersetName,
//_value=true/false
}
).ToList();
除了匿名类型,您还可以将存储类型模型作为Json返回