gpt4 book ai didi

c# - mongodb中的数据引用

转载 作者:可可西里 更新时间:2023-11-01 10:44:26 29 4
gpt4 key购买 nike

我有两个模型 calss user 和 product,并且有共同的属性 productId。我想从 Mongodb 获取用户数据。我想获取对应于他下应该显示的产品的用户。

用户模型

公共(public)类用户:产品 {

    [BsonId] 
public string GuId { get; set; }

public string Name { get; set; }

public string EMailAddress { get; set; }


public string ProductId { get; set; }


}

产品型号

公共(public)类产品 {

    [BsonId]
public int Id { get; set; }
public string ProductId { get; set; }

public string ProductName { get; set; }
}

我的应用层有以下代码:-

   public IEnumerable<User> GetAllUsers()
{
// var users = new User();
IList<User> itemCollection = new List<User>();
var itemIdList = new List<string>();
itemCollection = _users.Include<User>.Load(itemIdList.ToArray())

.OrderByDescending(x => x.LastUpdatedDate).ToList();

// var itemCollection = _users.Load<User>(itemIdList.ToArray());

this.LoadItemStatusDefinitions(itemCollection);

var users = _users.
FindAll().
SetSortOrder(SortBy.Descending("createdate"));

return users;
}

private void LoadItemStatusDefinitions(IEnumerable<User> items)
{
// iterates through each items in the collection.
foreach (var item in items)
{
// check whether status definition is already assigned to the item
if (!string.IsNullOrEmpty(item.ProductId))
{
// loading the status definition associated with each item
var statusDefinition = _users.Load<Product>(item.ProductId);
if (statusDefinition != null)
{
// assign the status definition to the item.
item.ProductId = statusDefinition;
}
}
}
}

最佳答案

您的模型看起来像是在设计时考虑了关系数据库。 MongoDB siteschema design 上有很好的资源.尝试为 MongoDB 设计良好的文档模式绝对是一种不同的思维方式。不要害怕对数据进行非规范化。

一个可能的架构可能是:

{
GuID: "",
Name: "",
EMailAddress: "",
Product: {
Id: 0,
ProductId: "",
Name: ""
}
}

不清楚您是否需要产品子文档中的两个 id 字段。

关于c# - mongodb中的数据引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14888817/

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