标签: entity-framework-5

使用Entity framework 5和VS 2012,DbContext代码生成策略失败

我在.NET framework 4.5(VS 2012)中有一个WPF项目,并使用NuGet包下载了Entity Framework 5.解决方案.所有关于Entity Framework 5的文档都说默认代码生成策略None(即DbContext代码生成).但就我而言,在添加新的ADO.Net实体数据模型时,代码生成策略默认的(即EF设计器生成派生自ObjectContext的上下文类和从EntityObject派生的实体类.)但我想遵循DbConext代码生成机制.我正在遵循Database First方法.我错过了任何设置吗?还是我需要单独安装T4模板?

谢谢.

c# dbcontext .net-4.5 entity-framework-5 visual-studio-2012

6
推荐指数
1
解决办法
4882
查看次数

数据绑定linq查询到Entity Framework 5.0中的datagridView

我正在学习实体框架(5.0和VSExpress 2012),我在将查询绑定到WinForms中的dataGridView时遇到了麻烦.我有下面的代码,当我启动应用程序时它显示我的查询,但我不知道在更改底层数据库中的数据后我需要做什么来更新dataGridView.这样做的最佳方法是什么?我在这做错了什么?

private void Form1_Load(object sender, EventArgs e)
    {
        using( var ctx = new TimeKeepEntities())
        {

            var qLoggedIn = from r in ctx.tblTimeRecords
                        where (r.tblEmployee.Active && !r.ClockOut.HasValue) || System.Data.Objects.EntityFunctions.DiffDays(r.ClockOut, DateTime.Now)<30
                        select new { Name = r.tblEmployee.Last + ", " + r.tblEmployee.First, r.tblProject.ProjName, r.ClockIn, r.ClockOut };

            dataGridView1.DataSource = qLoggedIn.ToList();

        }
    }
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-5

6
推荐指数
1
解决办法
2万
查看次数

ObjectContext实例已被释放,不能再用于需要连接的操作

由于EF的更改跟踪和延迟加载功能,我在查询中遇到问题.问题是,在我得到查询结果之后,我使用AutoMapper将域对象映射到我的业务模型中,但由于已经处理了上下文,它不断抛出异常.

ObjectContext实例已被释放,不能再用于需要连接的操作.

当我在调试器中查看结果集合时,我看到它是一个列表,DynamicProxy而不是实际的实体.我试图停止更改跟踪,但这没有帮助.这是我的代码:

    public List<ContentTypeColumn> GetContentTypeColumns(Int64 contentTypeId)
    {
        List<ContentTypeColumn> result = new List<ContentTypeColumn>();
        using (SCGREDbContext context = new SCGREDbContext())
        {                
            ContentType contentType = context.ContentTypes.Include("Parent").AsNoTracking().FirstOrDefault(x => x.Id.Equals(contentTypeId));

            result.AddRange(contentType.ContentTypeColumns.ToList());
            while (contentType.Parent != null)
            {
                result.AddRange(contentType.Parent.ContentTypeColumns.ToList());
                contentType = contentType.Parent;
            }    
        }
        return result.ToList();
    }
Run Code Online (Sandbox Code Playgroud)

注意:如果您需要查看此操作中涉及的域模型,可以参考此问题.

entity-framework lazy-loading change-tracking objectcontext entity-framework-5

6
推荐指数
1
解决办法
5011
查看次数

具有WCF属性的Entity Framework 5.0 DBContext模板支持

我正在使用VS 2010中的Entity Framewok 4.0 POCO和WCF服务开发Dot Net项目.由于性能改进和表值功能支持,我将切换到Ef 5.0和VS 2012.

但我搜索了很多,没有找到任何poco生成器模板或DBcontext生成器模板,支持在VS 2012和EF5.x中使用DataContract和DataMember属性.

[DataContract(IsReference = true)]
[KnownType(typeof(Transactions))]
public partial class Accounts 
  {
    [DataMember]
    public int AccountID { get; set; }

    [DataMember]
    public string AccountCode { get; set; }
  }
Run Code Online (Sandbox Code Playgroud)

我的问题是:

1-有没有人有这样的模板在VS2012中工作?

2-有没有人知道EF 5.x DBContext生成器中所需的更改,以自定义模板以支持WCF所需的属性.

我的时间很少,我真的需要帮助.

感谢您的帮助或指导.

wcf poco entity-framework-5

6
推荐指数
1
解决办法
1218
查看次数

带有存储库的breezejs

我们一直在密切关注使用Breezejs的SPA,以便在客户端和服务器之间提供数据上下文.这些功能在客户端看起来很棒,但是我们希望在服务器上使用Repository模式,并且可以很好地分离关注点,而不必继承EFContextProvider,这会导致IoC出现问题,并可能导致单元测试/模拟.我们一直在关注Plupaight上John Papa的Code Camper样本,该样本最初使用没有Breeze的Respository/UoW模式,然后让我们看看包含Breeze的Hot Towel模板.

有谁知道Breeze如何被抽象到一个Repository,它可以干净地保存DbContext(如果使用Entity Framework).此外,如果您不使用Entity Framework并且更喜欢使用其他ORM(如nHibernate),会发生什么.

repository-pattern entity-framework-5 single-page-application breeze

6
推荐指数
1
解决办法
979
查看次数

动态数据IObjectContextAdapter缺少引用

我重新安装了VS2012和Update 2.我创建了一个新的"ASP.NET动态数据实体Web应用程序"项目.然后我添加了一个"ADO.NET实体数据模型",它是从现有的SQLServerExpress数据库生成的.

但是,当我去构建解决方案时,我收到以下错误:

找不到类型或命名空间名称'IObjectContextAdapter'(您是否缺少using指令或程序集引用?)

这似乎是在声明,System.Data.Entity.Infrastructure但我无法在任何地方找到那个集会.我已经验证我已经为解决方案安装了EF5,因为我的packages.config显示:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="5.0.0" targetFramework="net45" />
</packages>
Run Code Online (Sandbox Code Playgroud)

EntityFramework引用属性显示:

RuntimeVersion:v4.0.30319
版本:5.0.0.0

在web.config我有:

  <assemblies>
    <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
  </assemblies>
Run Code Online (Sandbox Code Playgroud)

这看起来不对,因为应该说5.0.0.0?然而,改变它没有任何影响.有人可以指点我正确的方向吗?

c# asp.net entity-framework-5

6
推荐指数
1
解决办法
7318
查看次数

如何使用Entity Framework Database First方法对数据进行种子化?

我看到许多使用Code First播种的例子,但我不确定我在使用EF Database First时了解播种数据库的惯用方法.

entity-framework entity-framework-5

6
推荐指数
1
解决办法
2472
查看次数

如何在实体框架中执行原始sql查询?

我正在使用asp.net mvc 3和实体框架5.我有我的.edmx文件并且能够使用linq或SP与我的数据库交互,但我想运行一些原始的sql语句.我正在尝试这样的事情:

Using(var ctx=new HREntities())
{
  ctx.Database.ExecuteSqlCommand("insert into Employees values {0}, {1}",   model.EMPLOYEEID, model.EMPLOYEENAME);
  ctx.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

是否有可能以这种方式执行sql查询?谢谢.

sql edmx asp.net-mvc-3 entity-framework-5

6
推荐指数
2
解决办法
3万
查看次数

实体框架5,删除一对多的关系?

实体A,B的关系是一对多,(A有很多B,B必须属于A).

我禁用lazy loading并加载A,B,如下所示:

dbContext.As.Load();
//**particaly load B** 
dbContext.Bs.Where(predicateX).Load();
Run Code Online (Sandbox Code Playgroud)

我用的时候

dbContext.As.Remove(someA)
Run Code Online (Sandbox Code Playgroud)

要删除A,我会遇到以下错误消息

The relationship could not be changed because one or more of the foreign-key properties is non-nullable

相反,如果我使用:

//remove all B in someA
foreach(B b in someA.Bs.ToList())
{
   dbContext.Bs.Remove(b);
}
dbContext.As.Remove(someA)
Run Code Online (Sandbox Code Playgroud)

一切都好.

有一个更好的方法吗?

编辑


我正在使用Database First并在数据库端添加B的外键约束(在删除级联上).

我认为"外键约束"恰好等于代码"OnModelCreating".但代码"dbContext.As.Remove(someA)"无法按预期工作.

当ABC级联一对多关系时,事情变得更糟.为了删除someA,你需要这样做

foreach(B b in someA.Bs.ToList())
{
  foreach(C c in b.Cs.ToList())
  {
    dbContext.Cs.Remove(c);
  }
  dbContext.Bs.Remove(b);
}
dbContext.As.Remove(someA);
Run Code Online (Sandbox Code Playgroud)

解决了:


我首先使用数据库(sqlite)并在数据库端添加外键约束.

使用vs2012从sqlite数据库文件创建edmx,

vs2012未能设置关系的"on delete cascade"属性.

手动设置属性后,单个调用"dbContext.As.Remove(someA)"按预期工作!

entity-framework-5

6
推荐指数
1
解决办法
6729
查看次数

Do Entity Framework提供将DB类型转换为C#类型的实用程序?

我使用反射和类型构建器构建动态类,所有,我想知道如何直接类型转换为c#类型

目前我正在这样做,但EF提供这种事情吗?

 case "uniqueidentifier":
                return typeof(Guid);
            case "bit":
                return typeof(Boolean);
            case "nvarchar":
                return (typeof(string));
            case "datetime":
                return typeof(DateTime);
            case "float":
                return typeof(double);
            case "int":
                return (typeof(int));
Run Code Online (Sandbox Code Playgroud)

谢谢

更新 我假设EF现在没有提供实用程序,可以公开访问.接受的答案与Ef无关.那里有不同的图书馆.

RyszardDżegan已给出答案,但不能在TT模板或edmx之外使用(或者我可能不知道)

c# types entity-framework entity-framework-5

6
推荐指数
1
解决办法
1593
查看次数