让我们假设我有一个名为 Debt
的实体:
public class Debt
{
[Key]
public int Id { get; set; }
public int Amount { get; set; }
public int UserId { get; set; }
}
我是先用Code,所以简单介绍一下
IDbSet<Debt>
就可以使用了。之后,我想为数据库级别的读取添加一些安全性:
我创建了一个名为 Debt_Read 的 View :
CREATE VIEW Debt_Read AS SELECT * FROM Debt WHERE UserId IN (1,2,3)
让我们保持 View 主体简单,在现实生活中,此代码使用一些 sql 函数从 session 中检索用户 ID。
我不想 EF 将我的
DbSet<Debt>
映射到从 VIEW 读取并将更新和创建写入 TABLE。我怎样才能做到这一点?
最佳答案
您可以使用 Dapper。
Dapper 是 Stack Overflow 创建的微型 ORM。
您可以使用 EF 到 CUD 和 Dapper 来阅读。
使用 Dapper,您可以构建您的查询。
在这种情况下,您能否使用 View (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
希望有用!
关于c# - Entity Framework 映射以查看读取并映射到表以获取 CUD,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31655981/