实体框架映射到用于读取的视图和用于CUD的表
本文关键字:用于 视图 CUD 的表 读取 框架 映射 实体 | 更新日期: 2023-09-27 18:05:01
假设我有一个名为Debt
的实体:
public class Debt
{
[Key]
public int Id { get; set; }
public int Amount { get; set; }
public int UserId { get; set; }
}
我首先使用Code,所以我只是简单地介绍IDbSet<Debt>
并使用它。
之后,我想增加一些安全读在DB级别:我创建了一个名为Debt_Read:
的视图CREATE VIEW Debt_Read AS SELECT * FROM Debt WHERE UserId IN (1,2,3)
让我们保持视图体简单,在实际生活中,这段代码使用一些sql函数从会话中检索用户id。
我不想EF映射我的DbSet<Debt>
从视图读取和写入更新和创建到表。
我怎样才能做到这一点?
您可以使用Dapper。
Dapper是一个由Stack Overflow创建的micro-ORM。您可以使用EF来CUD,使用Dapper来Read。
使用Dapper,您可以构建您的查询。
在这种情况下,您可以使用视图(Debt_Read)构建您的选择查询吗?
一个简单的例子:
public Debt FindAll()
{
var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BD"].ConnectionString);
using (IDbConnection db = conn)
{
return db.Query<Debt>("Select * From Debt_Read");
}
}
如果你感兴趣,请阅读Julia Lerman写的关于使用ef和dapper的应用程序的文章。
https://msdn.microsoft.com/en-us/magazine/mt703432希望这是有用的!