我收到了几十条旧 SQL 语句,每条语句都有数百行。Models
每个 SQL 都映射到共享项目中具有自己唯一 POCO 的代码。
例如项目中的 SQLSelect Name, Birthday From People
有一个等价的 POCO Models
:
public class BirthdayPerson : SqlResultBase {
public string Name { get; set; }
public datetime Birthday { get; set; }
//SqlResultBase abstraction:
public string HardcodedSql { get {
return "Select Name, Birthday From People";
}}
}
在我的 DAL 中,我有一个通用SQL运行器,它<T>
代表 SQL 的 POCO。所以我的业务逻辑可以调用GetSqlResult<BirthdayPerson>()
:
public IEnumerable<T> GetSqlResult<T>() where T : SqlResultBase, new() {
return context.Database.SqlQuery<T>((new T()).HardcodedSql);
}
问题是我的Models
库在整个应用程序中使用,并且我不希望 SQL 在该 HardcodedSql 属性中的应用程序中公开。
这是我正在使用的架构: