我将在ApplicationUser
和一个名为Topic
的自有类之间创建一个多对多关系的表。表I用于保持用户对主题的上下投票,使得用户不能多次投票给主题。所以我的想法是使用如下表所示的表(⚿是表的主键):
╔══════════════════════╦════════════════════╦═════════╦════════════════════════╗
║ UserId ⚿ ║ TopicId ⚿ ║ Vote ║ Time ║
╠══════════════════════╬════════════════════╬═════════╬════════════════════════╣
║ x ║ 1 ║ up ║ 2016/02/02 15:00:00 ║
║ y ║ 2 ║ up ║ 2016/02/01 15:00:00 ║
║ y ║ 1 ║ down ║ 2016/01/01 14:00:00 ║
╚══════════════════════╩════════════════════╩═════════╩════════════════════════╝
↓ ↓ ↓ ↓
Must reference to Must reference to Other information about the vote
the table where the the table where my
users are stored topic are stored
如何使用标识框架将此结构迁移到数据库?我还使用代码的第一种工作方式。
您可以在下面找到我的Topic
类以及扩展到该类的其他类。类ApplictionUser
中的代码未更改。
public class Topic
{
public int TopicId { get; set; }
public bool Deleted { get; set; }
public string UserId { get; set; }
public ApplicationUser User{ get; set; }
public string Text { get; set; }
public DateTime Creation { get; set; }
public List<Vlag> Flags { get; set; }
public int? BlogId { get; set; }
public Blog Blog { get; set; }
public int? ReactionId { get; set; }
public Reaction Reaction { get; set; }
}
public class Blog: Topic, IVote
{
public int Id { get; set; }
public int CategorieId { get; set; }
public Categorie Categorie { get; set; }
public string Name { get; set; }
public int Down { get; set; }
public int Up { get; set; }
public int CalculateTotal()
{
return Up - Down;
}
}
public class Reactie : Topic, IVote
{
public int Id { get; set; }
public int Down { get; set; }
public int Up{ get; set; }
public Blog OwnerBlog { get; set; }
public int OwnerBlogId { get; set; }
public int CalculateTotal()
{
return Up - Down;
}
}
public interface IVote // used for holding the number of up and down votes for a blog
// or reaction.
{
int Up { get; set; }
int Down { get; set; }
int CalculateTotal();
}
答案 0 :(得分:0)
我找到了办法:
Table name: Votes
╔═════════════════╦══════════════════════╦════════════════════╦═════════╦════════════════════════╗
║ VoteId ⚿ ║ UserId ↗ ║ TopicId ↗ ║ Vote ║ Time ║
╠═════════════════╬══════════════════════╬════════════════════╬═════════╬════════════════════════╣
║ 1 ║ x ║ 1 ║ up ║ 2016/02/02 15:00:00 ║
╠═════════════════╬══════════════════════╬════════════════════╬═════════╬════════════════════════╣
║ 2 ║ y ║ 2 ║ up ║ 2016/02/01 15:00:00 ║
╠═════════════════╬══════════════════════╬════════════════════╬═════════╬════════════════════════╣
║ 3 ║ y ║ 1 ║ down ║ 2016/01/01 14:00:00 ║
╚═════════════════╩══════════════════════╩════════════════════╩═════════╩════════════════════════╝
↓ ↓ ↓ ↓ ↓
New primary key References to References to Other information about the vote
of the table the table where the the table where my
users are stored topic are stored
图例: