非持久性字段
Non-Persistence Field
我有 Items
table :
Id Code Quantity
1 Cake01 10
2 Cake02 15
3 Cake03 20
public class Items
{
public int Id { get; set; }
public string Code { get; set; }
public int Quantity { get; set; }
}
Orders
table :
Id ItemsId Quantity
1 1 5
2 1 3
3 2 10
4 3 2
5 3 5
6 1 2
public class Orders
{
public int Id { get; set; }
public int ItemsId { get; set; }
public virtual Items Items { get; set; }
public int Quantity { get; set; }
}
如何在 MVC 5 中获取剩余数量?通常,我只是像这样创建视图:
select a.Id, a.Quantity-(isnull(b.Quantity,0)) as Remaining
from Items a left join
(select ItemsId as Id, sum(Quantity) as Quantity group by ItemsId) as b
on a.Id = b.Id
结果:
Id Remaining
1 1
2 5
3 10
是否可以在 MVC 5 中创建非持久性字段?我一直在搜索这个,但一无所获。
由于每个 Order
都会有一个通过 ItemsId
forigen 键和 Items
导航 属性 关联的项目,您应该添加订单集合 属性 到您的 Items
实体。
public class Items
{
public int Id { get; set; }
public string Code { get; set; }
public int Quantity { get; set; }
public ICollection<Orders> Orders { set; get; }
}
现在可以使用 LINQ 查询来获取每个项目的剩余数量。我会创建一个视图 model/DTO 来表示这些数据。
public class ProductVm
{
public int Id { set; get; }
public string Code { set; get; }
public int RemainingQuantity { set; get; }
}
现在在您的 LINQ 查询中,获取项目,从每个项目的订单集合中获取数量总和,然后从数量 属性 值中减去该总和。
var products = db.Items
.Select(p => new ProductVm
{
Id = p.Id,
Code = p.Code,
RemainingQuantity = p.Quantity - p.Orders
.Sum(n => n.Quantity)
}).ToList();
此处 products
的类型将是 List<ProductVm>
。
我有 Items
table :
Id Code Quantity
1 Cake01 10
2 Cake02 15
3 Cake03 20
public class Items
{
public int Id { get; set; }
public string Code { get; set; }
public int Quantity { get; set; }
}
Orders
table :
Id ItemsId Quantity
1 1 5
2 1 3
3 2 10
4 3 2
5 3 5
6 1 2
public class Orders
{
public int Id { get; set; }
public int ItemsId { get; set; }
public virtual Items Items { get; set; }
public int Quantity { get; set; }
}
如何在 MVC 5 中获取剩余数量?通常,我只是像这样创建视图:
select a.Id, a.Quantity-(isnull(b.Quantity,0)) as Remaining
from Items a left join
(select ItemsId as Id, sum(Quantity) as Quantity group by ItemsId) as b
on a.Id = b.Id
结果:
Id Remaining
1 1
2 5
3 10
是否可以在 MVC 5 中创建非持久性字段?我一直在搜索这个,但一无所获。
由于每个 Order
都会有一个通过 ItemsId
forigen 键和 Items
导航 属性 关联的项目,您应该添加订单集合 属性 到您的 Items
实体。
public class Items
{
public int Id { get; set; }
public string Code { get; set; }
public int Quantity { get; set; }
public ICollection<Orders> Orders { set; get; }
}
现在可以使用 LINQ 查询来获取每个项目的剩余数量。我会创建一个视图 model/DTO 来表示这些数据。
public class ProductVm
{
public int Id { set; get; }
public string Code { set; get; }
public int RemainingQuantity { set; get; }
}
现在在您的 LINQ 查询中,获取项目,从每个项目的订单集合中获取数量总和,然后从数量 属性 值中减去该总和。
var products = db.Items
.Select(p => new ProductVm
{
Id = p.Id,
Code = p.Code,
RemainingQuantity = p.Quantity - p.Orders
.Sum(n => n.Quantity)
}).ToList();
此处 products
的类型将是 List<ProductVm>
。