然而,由于我来自sqlserver/MySQL的背景,我有点不确定当涉及到关系时我应该如何构造我的对象(或者我只是没有正确理解对象数据库的工作方式)。
下面是我的简单示例:我只有两个模型类,Issue和Person。
public class Issue
{
public string ID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public DateTime? SubmittedOn { get; set; }
public DateTime? ResolvedOn { get; set; }
public Person AssignedBy { get; set; }
public Person AssignedTo { get; set; }
}
public class Person
{
public string ID { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
这个
ID
属性只是.NET生成的GUID字符串
Guid.NewGuid()
帮手。
Person
存储在数据库中的对象:
-
用户登录。在数据库中查询
它匹配用户名和密码,并将其GUID id存储为会话变量。重定向到应用程序主屏幕。
-
登录用户从下拉列表中选择要分配给的用户,创建一个新的问题票证。他们填写其他细节(标题、描述等),然后提交表格。
-
查询
人
数据库中的对象(通过其GUID ID)来获取表示已登录用户的对象和表示已将票证分配给的用户的对象。创建新的
人
对象(用发布的表单数据填充),指定
人
对象到
Issue
AssignedBy
AssignedTo
属性,并存储它。
人
针对每个存储的对象
记录。但是如果我更新了原版会怎样呢
人
所有存储的引用
人
在各种问题对象更新,还是我必须手动处理?
是
它们是参考资料,还是副本?
如果只为AssignedBy和AssignedTo字段(如下所示)存储一个GUID字符串,然后每次都基于该字符串查找原始人员,会更好/更高效吗?
public class Issue
{
public string ID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public DateTime? SubmittedOn { get; set; }
public DateTime? ResolvedOn { get; set; }
public string AssignedByID { get; set; }
public string AssignedToID { get; set; }
}