gpt4 book ai didi

asp.net - mvc中模型类虚属性的使用

转载 作者:行者123 更新时间:2023-12-05 08:57:26 24 4
gpt4 key购买 nike

public class Employee
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public int DesignationID { get; set; }

**public virtual Designation Designation { get; set; }**
}

上下文类

public class DataClass : DbContext
{
public DbSet<Employee> Employee{ get; set; }
public DbSet<Designation> Designation { get; set; }
}

ViewModelClass

public class Class3
{
public Employee Employee{ get; set; }
public Designation Designation { get; set; }
}

查询:-

(from emp in dc.Employee
join designation in dc.Designation
on emp.DesignationID equals designation.DesignationID

select new Class3
{
Employee = emp ,
Designation = designation,
}).Single();

如果你查看 employee 类属性

public virtual Designation Designation { get; set; }

即使我删除了这个属性,这个属性也没有用,代码可以工作

我的做法对吗??因为互联网上的每个例子都定义了这个属性,但在我的例子中它没有用,我认为这些是为了投影目的但不理解它的机制

谢谢

最佳答案

如果您真的想使用示例中所示的自制联接来查询数据,您可以安全地删除 Employee.Designation 属性。

Entity Framework 通常将虚拟属性用于 lazy loading相关对象(在第一次访问引用实体的属性时自动从数据库加载实体或实体集合的过程)。

所以使用延迟加载你的查询可以写成

(from emp in dc.Employee
select new Class3
{
Employee = emp ,
Designation = emp.Designation,
}).Single();

EntityFramework 将自己进行连接。

旁注:在这种情况下,您的 Class3 View 模型看起来几乎与 Employee 模型重复,因此它看起来是多余的。但我想这可能是一些综合示例,而不是真实示例。

关于asp.net - mvc中模型类虚属性的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784573/

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