我希望数据库设置为内部的,以确保外部包只能访问和编程接口而不是具体类
例如
namespace Domain
{
public interface IProduct
{
string Description { get; }
int Id { get; }
decimal Price { get; }
}
}
//Separate Person.cs file for custom logic
namespace Domain
{
internal partial class Product :IProduct
{
}
}
internal partial class POS : DbContext
{
public POS()
: base("name=POS")
{
}
internal DbSet<Product> Products { get; set; }
}
//The other Person.cs file is generated by the .tt file
//_context.People is null which caused the dreaded null pointer exception :(
var people = _context.People.ToList();
一旦我通过模型浏览器将对 Person 类和 People 实体的访问设置为公共,它就会再次工作,但我想限制对内部的访问以进行包封装。
它适用于 VS2010 EF 中的 Context,但不适用于 VS2012 中的 DbContext。
任何帮助深表感谢 :}
附言
现在我刚刚编辑了 .tt 文件,如下所示
public <#=code.Escape(container)#>()
: base("name=<#=container.Name#>")
{
Products = Set<Product>();
这会生成如下实例化集合的上下文类,最好不必为模型中的每个实体集将其添加到 .tt 文件中。
internal partial class POS : DbContext
{
public POS()
: base("name=POS")
{
Products = Set<Product>();
}