那么简单.我需要使用Code First 创建一个View.我在Google和SO上都没有发现任何相关信息.有没有办法实现这个目标?
我需要使用linq创建和查询该视图,因此它不是使用数据库创建脚本创建它的解决方案,例如:
var results = from c in db.Customer
join v in db.MyView on c.Id equals v.Id
select c;
Run Code Online (Sandbox Code Playgroud)
解决方案也是可以接受的.我需要一种方法来查询实体与非常量/非实体值.
我刚刚将数据库从数据库首先更改为代码!部署有多大改进!但现在我有以下问题.我从我的数据库生成了我的代码优先模型,但是在从生成的代码重新创建数据库后,我的数据库中的视图就像表一样生成了!
如何首先从代码生成我的视图?和/或如果我需要手动生成它们,将它们映射到我的实体?
编辑.
Luke McGregor的帖子肯定让我很亲近.是的,它现在生成视图.但迁移不起作用.
尝试执行Update-Database语句时,初始输出仍然是代码更改.
因此,我执行了Add-Migration xxx命令并再次触发了Update-Database命令.
编辑2:
解决我的代码优先代码和视图的SQL代码之间的一些差异解决了这个问题!
我是EF的新手并且首先学习EF代码.我正在寻找一个知识,首先用EF代码映射现有的sql server视图.我用POCO映射了我的视图,但得到了以下错误.
当我尝试从视图中获取数据时,抛出以下错误
附加信息:自创建数据库以来,支持'TestDBContext'上下文的模型已更改.考虑使用Code First Migrations来更新数据库
public class TestDBContext : DbContext
{
public TestDBContext()
: base("name=TestDBContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new vwCustomerConfiguration());
}
public DbSet<vwCustomer> vwCustomer { get; set; }
}
public class vwCustomerConfiguration : EntityTypeConfiguration<vwCustomer>
{
public vwCustomerConfiguration()
{
this.HasKey(t => t.CustomerID);
this.ToTable("vwCustomer");
}
}
public class vwCustomer
{
public int CustomerID { get; set; }
public string FirstName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
using (var db = new TestDBContext())
{
var listMyViews …Run Code Online (Sandbox Code Playgroud) 我创建了其它表/实体完成某些相当复杂的逻辑,并公开了一系列columns.All的,我想访问实体框架代码第一种方法这一观点,当我在看到讨论SQL Server视图此我只是跟着创造一个类"FooView.cs"并将其添加到DbSet<FooView>我的DbContext类的属性中.
public class FooView
{
public string PartNumber { get; set; }
public string PartType { get; set; }
}
public class CatalogContext : DbContext
{
public DbSet<FooView> FooView { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的代码时,我得到一个错误说:EntityType'FooView'没有定义键.定义此EntityType的键.
CatalogContext _db = new CatalogContext();
var l = _db.FooViews.Select(_ => _.PartNumber);
Run Code Online (Sandbox Code Playgroud)
但我想要它做的就是从DB访问我的视图 dbo.FooView
更容易解决此问题的方法是创建EDMX文件并访问视图,但我不希望有2个DB上下文.
如果有人能帮助我,我真的很感激,非常感谢.
我们的客户可以访问没有定义主键的视图.我知道实体框架需要一个主键来表识别.
但是对于没有主键的视图,仍然可以查询.
我试图找到但总是实体框架给出错误说:
错误:: EntityType'ViewWeight'没有定义键.定义此EntityType的键.
我理解密钥对于表很重要,但对于只是为了读取的视图,有任何黑客或方法来读取值而不修改视图本身.