gpt4 book ai didi

c# - 三个类的多对多关系

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:03 26 4
gpt4 key购买 nike

一开始我不得不说我不知道​​它是否一定是多对多的关系

假设我有三个类(class):

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 类中创建与 Entity Framework (核心 2.0)的正确关系?

最佳答案

让我知道这是否适合你

我会建议您将这些表标准化为

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)(first user like basketball)

(1,2,0)(first user does not have brown eyes)

(2,1,1) (second user likes football)

现在让我们举一个例子

(2,1,1) (second user likes football)

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();

除了 Annonymous Type,您还可以将 strongly Type Model 作为 Json 返回

关于c# - 三个类的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52852280/

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