POST编辑 - 见下文流利Automapper问题与标签创建
编辑我有一个流畅的自动映射其作为夏普架构的一部分查询。运行其中一个测试用例将生成一个模式,我可以使用它在我的数据库中创建表。
我正在开发一个帖子,以及与这些帖子相关的标签。我希望标签能够与多个帖子相关联,并且每个帖子都有0个或多个标签。
我想实现的DB模式:
邮政{ID,标题,SubmitTime,内容}
标签{ID,名称}
PostTag {帖子ID,标签识别}
相反,我得到:
发表的内容{Id,Title,SubmitTime,Content}
标记{ID,名称,帖子ID(FK)}
我用锋利的架构,并可类如下所示(或多或少):
public class Post : Entity
{
[DomainSignature]
private DateTime _submittime;
[DomainSignature]
private String _posttitle;
private IList<Tag> _taglist;
private String _content;
public Post() { }
public Post(String postTitle)
{
_submittime = DateTime.Now;
_posttitle = postTitle;
this._taglist = new List<Tag>();
}
public virtual DateTime SubmitTime { get { return _submittime; } private set { _submittime = value; } }
public virtual string PostTitle { get { return _posttitle; } private set { _posttitle = value; } }
public virtual string Content { get { return _content; } set { _content = value; } }
public virtual IList<Tag> TagList { get { return _taglist; } set { _taglist = value; } }
public class Tag : Entity
{
[DomainSignature]
private String _name;
public Tag() { }
public Tag(String name)
{
this._name = name;
}
public virtual String Name
{
get { return _name; }
private set { _name = value; }
}
public virtual void EditTagName(String name)
{
this.Name = name;
}
}
我可以看到它为什么走了建立它的数据库模式,因为有时候对象只能作为另一部分存在。但标签可以单独存在。
我该如何去实现这一目标?我对MVC,Nhibernate和SHarp架构等都很陌生,所以任何帮助都会非常感谢!
编辑 *
OK,我现在已经稍微调整我的班。我的问题是我期待推断中间表。相反,我意识到我必须创造它。 所以我现在(我已经简化了类稍有提高可读性的缘故:
class Post : Entity
{
[DomainSignature]
String Title
[DomainSignature]
DateTime SubmitTime
IList<PostTag> tagList
}
class Tag : Entity
{
[DomainSignature]
string name
}
class PostTag : Entity
{
[DomainSignature]
Post post
[DomainSignature]
Tag tag
}
这让我对与通常的邮政和变量表沿着中间实体的模式:
PostTag{id, name, PostId(FK)}
上面的问题是,它仍然不包含Tag的外键,而且它应该真的有一个ID列,因为它是一个关系表?我认为它应该是一个组合键,它由来自Post和Tag表格的PK。
我敢肯定,通过向Tag类
IList<PostTag> postList
我会得到另一个FK加入PostTag模式,但我不想添加上面,作为postList可能是巨大的。我不需要每次向系统中添加帖子。我会有一个单独的查询来计算这种信息。
任何人都可以帮我解决这最后一部分?谢谢你的时间。