【发布时间】:2019-03-21 23:30:36
【问题描述】:
一开始我不得不说我不知道它是否一定是多对多的关系
假设我有三个类:
User-detalis,包含一些基本的用户信息,如地区、城市
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)的正确关系?
【问题讨论】:
-
您可以让第三类充当 viewModel,它将包含 3 个属性 - UserDetails 的 ID、UserDetailsDictionary 的 ID 和您的布尔值,通过以这种方式存储 ID(它将作为外键工作),您可以非常容易地获取相应的详细信息
-
它是一个网络应用(ASP.Net Core MVC)?
-
它是 Web API,但它与业务逻辑和 DAL 层完全分离,所以我认为没关系。为什么应该让一些 viewModel 了解数据库架构?我的问题是关于如何在数据库中定义类以及如何将它们正确映射到实体框架
-
对不起,我没有正确阅读您的第一条评论。是的,如果我的第三个类包含 userDetailsId、dictionaryItemId、值,它是非常简单的模型,我可以从 linq 手动查询它,但我也想从其他上下文中查询,比如从 userDetails 到 DictionaryItem(就像我在帖子中写的那样)和我也不知道如何将它映射到 EF,因为我不得不说 UserDetailsId 是 FK,DictionaryItemID 是 FK,并且这两个值都是表的 PrimaryKey
标签: c# sql .net entity-framework-core