【发布时间】:2020-06-08 17:42:04
【问题描述】:
我正在尝试构建一个使用实体框架连接到 SQL Server 的 Web 应用程序。我有三个类,一个是注册咨询,第二个是注册联系信息,最后一个是分类咨询类型(有点像枚举但我需要存储更多数据)。
每个咨询都有一个联系信息(因此有一个对表Contact 的主键的引用)和一个ConsultationType(另一个对表Type 的主键的引用)。
public class Consultation
{
[Key]
public long id { get; set; }
public long ContactID { get; set; }
[ForeignKey("ContactID")]
public Contact Contact { get; set; }
public long ConsultationTypeID{ get; set; }
[ForeignKey("ConsultationTypeID")]
public ConsultationType Type { get; set; }
}
public class Contact
{
public long id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class ConsultationType
{
public long id { get; set; }
public string type{ get; set; }
public string abbreviated{ get; set; }
}
Consultation 表有 3 列(id、ContactID 和 ConsultationTypeID)。我希望根据外键中的 ID 自动填充所有 Contact 和 ConsultationType 引用。
目前,当我从数据库中检索数据时,只有ConsultationType 被填充,而不是联系人。我无法理解这种行为,因为我认为我的设置方式都相同。
编辑:当我检索Consultation 数据时,我得到一个包含 5 个属性(咨询 ID、联系人 ID、联系人、咨询类型 ID、咨询类型)的对象列表。其中4个已设置(仅联系人未设置)。我希望将联系人属性设置为包含联系人 ID 属性引用的 ID 的行的实例。
【问题讨论】:
-
请尝试再次阅读您所写的内容。自动填写联系方式和咨询类型是什么意思。联系和咨询类型中必须有数据才能创建咨询,而不是相反。对不起,如果我理解错了
-
你能展示你的 Select 方法吗?你添加了包含吗?
-
当我检索咨询数据时,我得到一个包含 5 个属性(咨询 ID、联系人 ID、联系人、咨询类型 ID、咨询类型)的对象列表。其中4个已设置(仅联系人未设置)。我希望将联系人属性设置为包含联系人 ID 属性重新引用的 ID 的行的实例。
-
对于select方法,我有一个DbContext,我只用这个函数
Consultation = await _context.Consultations.ToListAsync();
标签: c# sql-server entity-framework