[英]Dapper mapped multiple relation
這是我的模特:
public class Word
{
public string Word1 { get; set; }
public string SpecialCases { get; set; }
public virtual ICollection<Defination> Definations { get; set; }
}
public class Defination
{
public long WordId { get; set; }
public string Subjects { get; set; }
public virtual Word Word { get; set; }
public virtual ICollection<Example> Examples { get; set; }
}
public class Example
{
public long DefinationId { get; set; }
public string English { get; set; }
public virtual Defination Defination { get; set; }
}
我想使用dapper將我的結果映射到模型。 這是我使用它的代碼,
string query =
$"SELECT Word.*, Defination.* " +
$"FROM Word Left Join Defination On Word.id = Defination.Id " +
$"WHERE Word.id = {id} ";
var item2 = cn.Query<Word, Defination, Word>(query,
(Word, Defination) =>
{
Word.Definations.Add(Defination);
Defination.Word = Word;
return Word;
}
);
return item2.FirstOrDefault();
我的問題是如何向每個Defination模型添加示例數據。
我從以下代碼解決了我的問題:
public Word GetByID(long id)
{
using (IDbConnection cn = Connection)
{
cn.Open();
const string wordQuery = "SELECT * FROM Word WHERE Id = @Id AND Word.SoftDelete = 0 ";
Word _word = cn.Query<Word>(wordQuery, new { Id = id }).FirstOrDefault();
if(_word != null && _word.Id != 0)
{
const string definationQuery = "SELECT * FROM Defination where WordId = @WordId AND SoftDelete = 0";
List<Defination> _defination = cn.Query<Defination>(definationQuery, new { WordId = _word.Id }).ToList();
_word.Definations = _defination;
if(_defination != null && _defination.Any())
{
const string exampleQuery = "SELECT * FROM Example where DefinationId = @DefinationId AND SoftDelete = 0";
for (int i=0; i<_defination.Count(); i++ )
{
_defination[i].Examples = cn.Query<Example>(exampleQuery, new { DefinationId = _defination[i].Id }).ToList();
}
}
}
return _word;
}
}
我知道它不夠干凈,但對我有用。 謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.