【发布时间】:2010-01-02 19:55:45
【问题描述】:
我已经尝试了很长一段时间来弄清楚如何完成我的任务,事实上我什至不确定我前进的方向,就我的 SQL 表而言确实是一个糟糕的方向 - 但它是我能想到的最简洁的。
我的问题很容易描述。我有一个包含 cmets 的表,我的 User 表有一个外键(代表评论的作者)。为了正确支持匿名用户,我决定使这个外键可以为空——我还提供了 3 列用于指定名称、电子邮件和网站,我希望在其中存储相关信息以防用户匿名——这些字段也是可以为空。
总之
- 如果用户已登录,外键将包含该用户的 ID,并且名称、电子邮件和网站将为空。
- 如果用户未登录,外键将为空,名称、电子邮件和网站将包含有关用户的数据。
在我的域模型中,我希望将其映射到用户类(属性,作者,在我的评论类上)。然后这个 User 类有一个名为“IsAnonymous”的属性 - 应该相应地设置。
理想情况下,我会设置一些映射,根据外键的值映射此 Author 属性并正确分配这些属性。我已经为我的 User 类映射了一个映射到 User 表,但我不确定我将如何做到这一点。
我曾尝试查看 IUserType 界面,但我不太明白我以前会如何处理必须从 2 个不同的表中读取的问题。
使用我当前的数据库结构是否有合理的方法来执行此操作 - 或者我应该考虑切换我的布局,如果是,切换到什么?
我从用户表中的一个简单列切换为指示匿名用户,但是当名称列设置为唯一键时,这开始给我带来问题。我希望注册用户拥有唯一的名称,但不是匿名用户。
感谢您的宝贵时间。
编辑:阅读并决定也许一些 ASCII/伪 SQL 图表会派上用场
User
-----
UserId Guid PRIMARY KEY
Name nvarchar(200) UNIQUE KEY NOT NULL
Email nvarchar(200) NOT NULL
Website nvarchar(200) NOT NULL
Comment
-------
CommentId Guid PRIMARY KEY
UserId GUID - FK-USER
Name nvarchar(200)
Email nvarchar(200)
Website nvarchar(200)
【问题讨论】:
标签: c# sql-server nhibernate nhibernate-mapping