使用下面的代码,假设我有 5 种不同的类型,我可能会在变量类型中收到这些类型。除了编写 5 个条件语句之外,有没有办法编写一个并使用变量“type”来指示模型是什么,在本例中为“CommentVote”?或者这更多是我设计数据模型的方式的缺陷,这五件事中的每一个都有一个“投票”模型?
if (type == "comment")
{
CommentVote voteObj = db.CommentVotes
.Where(x => x.UserID == UserID && x.CommentID == id)
.SingleOrDefault();
if (voteObj != null)
{
voteObj.Vote = vote;
db.SaveChanges();
}
else
{
CommentVote c = new CommentVote {
CommentID = id, UserID = UserID, Vote = vote, DateCreated = DateTime.Now
};
db.CommentVotes.Add(c);
db.SaveChanges();
}
count = (db.CommentVotes.Count(x => x.CommentID == id && x.Vote == true) - db.CommentVotes.Count(x => x.CommentID == id && x.Vote == false));
}
魔术代码:我想做的事情。
var modelName = "";
var modelOtherName = "";
if (type == "comment") {
modelName = CommentVote;
modelOtherName = CommentVotes;
}
modelName voteObj = db.modelOtherName
.Where(x => x.UserID == UserID && x.CommentID == id)
.SingleOrDefault();
更新:我开始认为我的模型可能是基于下面引用的一些阅读的废话。所以我把其中的一些作为参考。让我知道这是否是我应该尝试解决的问题。
public class CommentVote
{
public int CommentVoteID { get; set; }
public bool Vote { get; set; }
public DateTime DateCreated { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
public int CommentID { get; set; } //This row changes from model to model
public virtual Comment Comment { get; set; } //This row changes from model to model
}
我有一些几乎相同的模型。