我有一个关于将T-SQL查询用作模型实体并将结果的一部分映射为相关实体的问题。
我有这个模型类,例如:
public class Device
{
public int DeviceId { get; set; }
public PlatformId { get; set; }
public string DeviceName { get; set; }
public PlatformName { get; set; }
}
我使用Entity Framework中的SQL查询方法(客户端需要原始SQL并且不能使用常规数据模型映射)。 SQL调用看起来像(主要模型在哪里):
public List<TResultModel> ExecuteSqlQuerry<TResultModel>(string query)
{
try
{
return this.DbConnection.Database.SqlQuery<TResultModel>(query).ToList<TResultModel>();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
Sql查询相当简单,它获取设备列表并加入平台,并且可以在几个平台上找到一个设备,这样简单的连接:
select *
from devices
join platforms on devices.platform_id = platforms.id order by platforms.name
如果我使用这个SQL查询,我会收到很多重复的设备。
重复我是指具有不同平台名称的重复设备名称列表,例如:
Device | Platform
Dev A | Pl A
Dev A | PL B
Dev B | PL A
Dev B | PL B
他们的id和名字所以我必须手动过滤所有这些值(以及linq)。
所以我想知道是否有任何方法可以将模型映射到这样的SQL查询,因此结果可以将自身绑定到可能看起来像的模型:
public class Device
{
public int DeviceId { get; set; }
public string DeviceName { get; set; }
public List<Platform> Platforms { get; set; }
}