我正在寻找一种将标签实现到基本上任何类/对象的方法。它可以是产品、博客、用户、评论……我的想法是创建一个可以实现到任何类的接口。通过这样做,它将自动创建数据库中所需的一切。
有没有办法做这样的事情?还是我需要为每个“可标记”对象创建一个实体?
我正在寻找一种将标签实现到基本上任何类/对象的方法。它可以是产品、博客、用户、评论……我的想法是创建一个可以实现到任何类的接口。通过这样做,它将自动创建数据库中所需的一切。
有没有办法做这样的事情?还是我需要为每个“可标记”对象创建一个实体?
为什么不在您的数据库中创建一个 EntityTag 表?
您还需要一个 EntityType 表。对于每个 POCO 类对象,您声明一个 EntityTypeId :-
一个例子,
new Blog
{
Id = 1,
Name = "Blog 1"
}
new Blog
{
Id = 2,
Name = "Blog 2"
}
new Product
{
Id = 1,
Name = "Product"
}
new EntityType
{
Id = 1,
EntityTypeName = "Blog"
}
new EntityType
{
Id = 2,
EntityTypeName = "Product"
}
当您想针对任何对象创建标签时,您只需在数据库中创建一个新的实体标签条目,如下所示:-
New EntityTag
{
EntityId = 1,
EntityTypeId = 1,
Text = "blog test 1 tag"
};
此 EntityTag 将与博客测试 1 相关联。
New EntityTag
{
EntityId = 2,
EntityTypeId = 1,
Text = "blog test 2 tag"
};
此 EntityTag 将与博客测试 2 相关联。
最后,
New EntityTag
{
EntityId = 1,
EntityTypeId = 2,
Text = "Product tag"
};
您将需要实现获取实体类型的方法,但这真的很容易。按照您的建议固定在接口上。您可以为接口继承的每个 POCO 对象创建一个部分类,在这里您可以设置 EntityTypeName。
希望这可以帮助。