下面解决了详细信息!!!!!!我有一个使用MSSQL和Dapper ORM的mvc项目。我的问题是;如何选择多对多关系中的实体两个表?例如我的下面的课程;
第一批产品;
#region Primitive Properties
[Key]
public Guid ProductID
{
get;
set;
}
public Nullable<int> CategoryID { get; set; }
public Nullable<int> BrandID { get; set; }
public string ProductName
{
get;
set;
}.............Other Details
对于许多人而言;
public virtual ICollection<Image> Images { get; set; }
public virtual ICollection<Order> Orders { get; set; }
public virtual ICollection<Rating> Ratings { get; set; }...... Other Details
和其他表格图片;
[Key]
public int ImageID
{
get;
set;
}............ Other Details
和许多人一样
public virtual ICollection<Product> Products { get; set; }
和我的表ProductToImages
FK ImageID FK ProductID
选择带图像的产品我的短小精悍的代码如下;
public virtual IEnumerable<Product> GetProductForView()
{
try
{
using (var cn = Connection)
{
const string sql = "SELECT Products.*,Images.* FROM Products JOIN ProductToImages ON Products.ProductID = ProductToImages.ProductID JOIN Images ON Images.ImageID = ProductToImages.ImageID ";
var lookup = new Dictionary<Guid, Product>();
cn.Open();
var product = cn.Query<Product,Image,Product>(sql, (p,i) =>
{
Product pp;
if (!lookup.TryGetValue(p.ProductID, out pp))
{
lookup.Add(p.ProductID, pp = p);
}
if (pp.Images == null)
{
pp.Images = new List<Image> { i };
}
return pp;
}, commandType: CommandType.Text, commandTimeout: 5, splitOn: "ProductID,ImageID").ToList();
cn.Close();
return product;
}
}
catch (Exception ex)
{
var message = ex.InnerException;
const string subject = "Error From Product Rep. / GetProductName(string productName)";
var mail = new MailSend();
mail.MailGonder(subject, message.ToString(), "******", "******", "******");
return null;
}
以下错误消息;
使用多映射API时,如果您拥有Id以外的密钥,请确保设置splitOn参数
那么如何选择和插入与dapper的多对多关系????谢谢你的回复。
由Tuple解决。谢谢你的一切