标签: entity-framework-5

实体框架DefaultConnectionFactory被忽略

我正在使用带有Code First的Entity Framework 5。我编写了一个自定义变量IDbConnectionFactory,希望用于类的所有连接DbContext,因此在应用程序生命周期的早期,在完成任何数据库工作之前,我会调用

Database.DefaultConnectionFactory = new MyConnectionFactory();
Run Code Online (Sandbox Code Playgroud)

但是,MyConnectionFactory.CreateConnection从未被调用过,这向我暗示了EF将其改回了-但是调试器显示MyConnectionFactory在运行了几个查询之后它仍然是a 。由于某种原因,它只是没有使用它。

DbContext是通过从app.config文件中传递连接字符串的名称来初始化的,而这些连接字符串确实指定了显式提供程序(确实必须如此),所以我想知道这是否导致连接的每次连接覆盖基于连接字符串的工厂。是否会发生这种情况,我是否可以在不注册一个全新的提供程序的情况下停止它(尽管也许这样做并不难吗?)。

我在网上看到的所有内容(在各种app.config示例中都被defaultConnectionFactory标记所遮盖)建议您可以将其更改IDbConnectionFactory为您选择的实例,并且可以正常工作,但我的行为却不行。

这样做的目的是允许我在打开新连接时运行一组特定的SQL语句,因此该问题的第二部分将是有人知道更好的方法吗?

entity-framework ef-code-first entity-framework-5

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

我应该将EntityFramework与存储过程一起使用吗?

我正在使用MVC和EF Code-First 构建一个网站.

据我了解,EF根据我的更改动态创建了一个完整的SQL命令.当然,如果我进行了大量更改,它将创建大量SQL查询和命令.

在我看来,我应该通过尽可能减少流量负载来提升我的网站性能.

有没有理由不这样做?是否存在不使用EF存储过程的主要站点?

stored-procedures entity-framework-5

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

Linq To实体比较List <int>的值

我正在使用Entity Framework 5.0,我遇到LINQ查询问题.我有以下方法接受一个整数值,然后传递给查询.这很好用.

public IList<tblcoursebooking> GetStandardReport(int AttendanceID)
{
    return _UoW.tblcoursebookingRepo.All
           .Where(cb => cb.Attended.Equals(AttendanceID)
           .ToList();

} 
Run Code Online (Sandbox Code Playgroud)

但是,我需要更改方法,使其接受整数列表,然后拉出所有记录,其中Attended等于任何整数列表.像这样的东西

public IList<tblcoursebooking> GetStandardReport(List<int> AttendanceIDs)
{
    return _UoW.tblcoursebookingRepo.All
           .Where(cb => cb.Attended.Equals == any AttendanceIDs
           .ToList();
} 
Run Code Online (Sandbox Code Playgroud)

我想尝试使用ContainsAny LINQ关键字,但是,Attended是单个值,而不是集合,在点之后我可用的唯一属性是

CompareTo,Equals,GetHashCode,GetType,GetTypeCode,ToString

有人可以帮忙吗?

谢谢你的时间.

linq linq-to-entities entity-framework entity-framework-5

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

在变量名称的开头使用数字

我正在将数据从SQL数据库映射到c#中的对象.问题是,其中一列不幸被命名为"100_hrs".因此,当我创建C#对象时,我在声明中出错:

public float 100_hrs {get; set;}
Run Code Online (Sandbox Code Playgroud)

我试过@在前面使用但是它不起作用.如果该属性的名称与表列的名称不同,则它不会映射.我该如何映射?

c# entity-framework-5

2
推荐指数
2
解决办法
7908
查看次数

反向工程数据库上的EF 5.0迁移.无法更新模型更改,因为表已存在

我正在使用EF电源工具的Beta 3 for EF5.0对现有数据库进行逆向工程.

当我从项目上下文菜单中选择"Reverse engineer code first"时,我会按预期获得所有模型和DBContexts +映射.一切看起来都不错.

逆向工程过程完成后,我立即成功启用了迁移.

但是我想为其中一个模型添加一个新属性.添加新属性后,

我运行PM> Add-Migration AddMyPropertyToMyTable

创建迁移文件,

如果我然后尝试PM>更新数据库

我收到一个错误,告诉我表已经存在.

我按照这里的教程:> http://msdn.microsoft.com/en-us/data/jj200620

为什么我收到此错误?当然桌子存在,我只是逆向设计它

我是否应该在逆向工程后删除数据库?或者在反向工程Db的情况下,我是否必须对实际数据库进行更改并再次重新设计它以在项目中获得所需的更改(那么首先是逆向工程的重点是什么?)

教程中是否缺少某些内容,即在模型更改后使数据库可更新所需的额外步骤?

entity-framework ef-migrations entity-framework-5

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

EF 5 Code first Entities FirstOrDefault方法返回null

这是基于Programming Code First EF的示例.

请看下面的课程.当PersonRepository调用实例化时,调用InsertOrUpdate方法返回Null值.据我所知,IQuariable的FitstOrDefault不应该返回Null.

这里有什么问题.谢谢您的帮助

    public class Person
{

    public int PersonId { get; set; }
    public int SocialSecurityNumber { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    //public int MyProperty { get; set; }
    public List<Lodging> PrimaryContactFor { get; set; }
    public List<Lodging> SecondaryContactFor { get; set; }

    public PersonPhoto Photo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

照片类

    public class PersonPhoto
{
    public int PersonID { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

.net entity-framework code-first ef-code-first entity-framework-5

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

首先自定义连接字符串EF5,DB

所以我已经生成了我需要的表,并且我需要能够在程序启动时更改我的连接字符串.目前我的联系是

"metadata=res://*/entityframework.Model1.csdl|res://*/entityframework.Model1.ssdl
|res://*/entityframework.Model1.msl;provider=MySql.Data.MySqlClient;
provider connection string=&quot;server=localhost;User Id=myuserid;
password=12345678;database=databasename&quot;"
Run Code Online (Sandbox Code Playgroud)

到目前为止我有什么

Get.designer.cs文件:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.EntityClient;
using Npgsql;
using System.Configuration;
using System.Data.Entity;
using System.Data.Entity.Validation;
using patientlist.entityframework;
using System.Xml;

namespace patientlist
{
    public partial class Get : Form
    {
        Timer update = new Timer();//60000 = 1min
        public Get()
        {
            InitializeComponent();
        } ....

    private void Timer(object sender, EventArgs e)
    {
        string connectionString = "metadata=res://*/entityframework.Model1.csdl|res://*/entityframework.Model1.ssdl|res://*/entityframework.Model1.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;User Id=myuserid;password=12345678;database=databasename&quot;";

        using (var blah …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework connection-string entity-framework-5

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

实体框架:如何在Entity Framework中将模型设置为Serializable

using System;
using System.Collections.Generic;
[Serializable]
public partial class user
{
    public int UserId { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public string UserName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public System.DateTime Creation { get; set; }
    public bool Status { get; set; }
    public int UserTypeId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

正如您在我的代码中看到的那样,我的类被设置为可序列化.但在我更新我的.edmx文件后,此设置被删除.更新edmx文件后如何保留Serializable?

c# asp.net entity-framework entity-framework-5

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

实体框架Sum()性能

我遇到以下Entity Framework查询的性能问题:

using (MyEntities context = new MyEntities())
{
    return context.Companies
                  .Single(c => c.CompanyId == company.CompanyId)
                  .DataFile.Sum(d => d.FileSize);
}
Run Code Online (Sandbox Code Playgroud)

在SQL事件探查器中进行跟踪时,我看到以下SQL命令:

exec sp_executesql N'SELECT 
[Extent1].[DataFileID] AS [DataFileID], 
[Extent1].[LocalFileName] AS [LocalFileName], 
[Extent1].[ServerFileName] AS [ServerFileName], 
[Extent1].[DateUploaded] AS [DateUploaded], 
[Extent1].[FileSize] AS [FileSize], 
[Extent1].[CompanyID] AS [CompanyID]
FROM [dbo].[DataFile] AS [Extent1]
WHERE [Extent1].[CompanyID] = @EntityKeyValue1',N'@EntityKeyValue1 int',@EntityKeyValue1=16
Run Code Online (Sandbox Code Playgroud)

从我所看到的,所有数据文件行都被返回(超过10,000)到内存然后Sum()正在发生.

编辑:

根据Patryk的建议,我已将查询更改为:

using (MyEntities context = new MyEntities())
{
    return context.Companies
                  .Where(c => c.CompanyId == company.CompanyId)
                  .Select(x => x.DataFiles.Sum(d => d.FileSize))
                  .Single();
}
Run Code Online (Sandbox Code Playgroud)

SQL跟踪看起来像这样:

SELECT TOP …
Run Code Online (Sandbox Code Playgroud)

.net c# linq entity-framework entity-framework-5

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

NerdDinner MVC4版本 - 为什么他们删除了存储库类?

我一直在查看NerdDinner教程.我正在阅读使用LINQ to SQL和MVC2 的原始PDF教程(http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf).在该教程中,他们实现数据上下文,然后实现存储库类以与数据实体进行交互.

我看到项目已更新为使用MVC4和Entity Framework(http://nerddinner.codeplex.com),因此我浏览了该代码以查看它们实现了哪些更改.他们将项目更改为代码优先,为每个数据实体分别使用模型类.我惊讶地发现他们完全摆脱了存储库.

我认为通过存储库模式抽象与数据库的通信通常是一种很好的做法...我知道教程通常会为了简洁而做出糟糕的设计选择,但我想知道为什么已经实现了存储库的教程做出了决定从这个版本中省略它们.

MVC4或EF中是否存在使存储库过时/冗余的问题?

c# repository-pattern nerddinner asp.net-mvc-4 entity-framework-5

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