У меня есть следующая ситуация в LINQ: у меня есть объект (блог "Post"), у которого есть поле "Status", которое может принимать разные значения, и есть таблица, в которой перечислены все эти значения (в этой таблице только Id , Desc).
Теперь, поскольку отношения между обеими таблицами созданы, в модели Post.Status является не int, а экземпляром "PostStatus".
Таким образом, если я хочу установить статус сообщения, скажем, 20, я не могу просто установить поле в 20, мне нужно иметь экземпляр PostStatus для назначения. Эти значения состояния все жестко запрограммированы с помощью логики, поэтому хорошо, если в моем коде жестко задано "20".
Есть ли лучший способ сделать это, что это?
switch (Action) {
case "Ignore":
post.PostStatus = (from s in db.PostStatus where s.Id == 90 select s).First();
break;
case "Assign":
post.PostStatus = (from s in db.PostStatus where s.Id == 20 select s).First();
break;
case "MarkDone":
post.PostStatus = (from s in db.PostStatus where s.Id == 30 select s).First();
break;
case "MarkPublished":
post.PostStatus = (from s in db.PostStatus where s.Id == 40 select s).First();
post.Public = true;
break;
}
Честно говоря, я ненавижу этот код, прежде всего потому, что он без необходимости запрашивает у БД экземпляр PostStatus, но в основном потому, что он настолько многословен.
Есть ли лучший способ сделать это?
Спасибо!
Daniel