Tag: sql server

DbContext和连接池

在我inheritance的应用程序中,这是在基本控制器中,应用程序中的每个其他控制器都inheritance自。 public BaseController() { db = new MyDbContext(); db.Database.Log = s => Debug.Write(s); } public MyDbContext() : base(“name=MyDbContext”) { // hack to force Visual Studio to deploy the Entityframework.SqlServer package var instance = SqlProviderServices.Instance; } 由于应用程序的设计方式,每个请求至少创建2个上下文。 (这是一个MVC应用程序,每个页面都调用HomeController以及为特定页面调用其他控制器。) 我的问题是DbContext创建与SQL Server的连接? 是在创建上下文时,还是仅在执行查询时? 如果它是前者,那么我将使用两倍于SQL服务器的连接数量而不是需要的数量,如果它是后者那么它可能不是太大的问题。 我不认为我能在不久的将来重构这一点,当然也不是没有道理的。 我应该注意这个设计有哪些潜在的缺陷? entity framework6.1.3

如何在不安装任何数据库服务器的情况下在本地运行桌面应用程

我想用数据库创建一个桌面应用程序,我正在使用Visual Studio 2013和C#,任何人都可以建议我用什么服务器来创建我的数据库,以便在我的客户端系统中运行我的应用程序而不在客户端安装任何数据库服务器系统[即没有安装MsSql服务器或MySql服务器或Acess],我希望我的应用程序在安装我自己的应用程序的exe文件时正常工作? 现在我在我的应用程序中使用MSSQL服务器,有没有办法在本地客户端系统中运行此应用程序而不安装MSSQL Server? [我的应用程序前端在我安装.Net FrameWork 4.5时工作,我在Sql Server中需要这样的.mdf数据库] 有人说SQL Server Compact,但我不知道如何使用它

LINQ生成子查询的简单顺序

我无法理解为什么SQL输出具有我在LINQ中编写的简单查询的子查询。 这是我的代码: var list = db.User.Where(u => u.Name == somename).OrderBy(u => u.IdUser).ToList(); somename是我在执行时传递的参数。 输出SQL是: SELECT Project1.IdUser, Project1.Name FROM (SELECT Extent1.IdUser, Extent1.Name FROM user AS Extent1 WHERE Extent1.Name = ‘John’ /* @p__linq__0 */) AS Project1 ORDER BY Project1.IdUser ASC 输出真的应该有一个简单的子查询吗? 我也试过了 var list = db.User.Where(u => u.Name.Equals(somename)).OrderBy(u => u.IdUser).ToList(); 它产生与上面相同的输出。 如果我硬编码参数,如: var list = db.User.Where(u => […]

无法连接到LocalDB

我正在尝试运行IIS托管的应用程序(以电影数据库的forms)来教我自己如何设计3层架构程序:MVC应用程序,WCF服务,SQL Server数据库。 由于我没有完整SQL Server的许可证密钥,因此我决定使用LocalDB并使用WCF服务来包装我的存储过程。 这是我第一次使用LocalDB并遇到连接到我的实例v13.0的问题。 我的问题: 在我的生活中,我无法在VS中获取我的项目以连接到LocalDB实例。 我一直收到以下错误: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 – 发生本地数据库运行时错误。指定的LocalDB实例不存在。 我的连接字符串(来自Web.config): 使用sqlcmd连接到它并运行查询运行正常: Visual Studio SQL Server对象资源管理器可以很好地连接: 连接字符串,当它到达有问题的行时由Visual Studio转义,所以我知道连接字符串没有错误地转义: “Data Source=(localdb)\\v13.0;Initial Catalog=MovieDB;Integrated Security=True;AttachDbFilename=|DataDirectory|\\MovieDB.mdf” 我尝试按照本指南( 第1部分和第2部分 )进行操作,图像至少在2016年4月18日被破坏,所以我无法完全理解我应该做什么。 我只能得到上述错误,因为我将应用程序池标识更改为LocalSystem: 当应用程序池在ApplicationPoolIdentity标识下运行时,我收到此错误: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 – 发生本地数据库运行时错误。无法获取本地应用程序数据路径。很可能未加载用户配置文件。如果在IIS下执行LocalDB,请确保为此启用了配置文件加载当前用户。 我甚至修改了C:\ windows \ system32 \ inetsrv \ config \ applicationHost.config文件以强制配置文件加载。 依然没有。 我的应用程序在“.NET 4.5”应用程序池下运行 我的代码: […]

使用不存在和连接的SQL查询到LINQ语法

我的SQL查询就像下面的SQL工作正常我需要将其转换为LINQ语法 SQL- SELECT [Key], Id FROM LocalizationKeys AS lk WHERE NOT EXISTS (SELECT 1 FROM Languages AS l JOIN LocalizationValues AS lv ON l.Id = lv.LanguageId WHERE l.Title = ‘en-US’ AND lv.LocalizationKeyId = lk.Id) 我试过LINQ语法 var result = (from lk in localizationKey where !(from l in lang join lv in localizationValue on l.Id equals lv.LanguageId […]

EntityFramework生成的SQL StartsWith()包含计划改变ESCAPE’〜’(代字号)

使用EntityFramework,子句.OrderBy(x => x.Title.StartsWith(“foo”))导致SQL WHERE (Title LIKE ‘foo%’ ESCAPE ‘~’) .OrderBy(x => x.Title.StartsWith(“foo”)) WHERE (Title LIKE ‘foo%’ ESCAPE ‘~’) 。 查看完整查询的执行计划,我发现当我删除ESCAPE ‘~’时,我得到了一个不同的计划(一个使用列的非聚集索引)。 为什么EF试图逃避不需要它的字符串,我怎么能让它停止?

为什么LINQ to SQL将GroupBy转换为多个查询

我注意到甚至比使用GroupBy的更简单的LINQ查询也被转换为与组密钥一样多的SQL查询。 我没有找到任何解释为什么会发生这种情况或我如何避免它。 例如,查询: from p in People group p by p.Name into g select g 被转换为尽可能多的selects作为列Name不同值,就像这样: — Region Parameters DECLARE @x1 VarChar(20) SET @x1 = ‘John’ — EndRegion SELECT [t0].[Name], [t0].[SurName] FROM [People] AS [t0] WHERE ((@x1 IS NULL) AND ([t0].[Name] IS NULL)) OR ((@x1 IS NOT NULL) AND ([t0].[Name] IS NOT NULL) AND (@x1 […]

在Entity Framework Core中使用两列的一对多关系

在我的项目中,我有一个表格Translation ,可以翻译任何模型。 为实现此目的,该表有两个字段: Model和ModelId 。 Model属性包含一个表示模型类型的整数, ModelId具有此模型的id。 因此,例如: Product表的modeltype为id 1 。 要获取ID为317的产品的所有翻译,我搜索Model=1 AND ModelId=317 。 现在我想在Entity Framework Core中创建这种关系。 我的所有模型都inheritance自BaseModel类, BaseModel具有一个属性ModelType ,其中包含模型类型的id。 此字段未映射,因此在数据库中不可用。 我试图使用流畅的api创建关系,但它不允许我指定更多的列来过滤。 modelBuilder.Entity() .HasMany(bm => bm.Translations) // Extra filters 有没有办法创建这种关系,而无需为每个需要翻译的查询手动创建连接?

entity framework6中的每个具体类型的表(TPC)inheritance(EF6)

为了避免使用Table Per Hierarchy(TPH),我一直在研究如何在我的数据库模型中最好地实现Table-Per-Concrete Class(TPC)inheritance。 我遇到了官方文档和本文 。 下面是一些带有一些简单inheritance的模拟类。 public class BaseEntity { public BaseEntity() { ModifiedDateTime = DateTime.Now; } [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public DateTime ModifiedDateTime { get; set; } } public class Person : BaseEntity { public string FirstName { get; set; } public string LastName { get; set; } […]

为什么C#round和SQL round函数产生不同的输出?

我正在使用C#和SQL的ROUND函数,并且令人惊讶的是两者都产生了不同的结果。 在SQL中: ROUND(1250.00, -2) = 1300 在C# ROUND 1250 ,圆形和precision = 2 = 1200 有没有人遇到过这种情况?