Tag: sql

SQL 2008 – INFORMATION_SCHEMA视图中的外键约束

我正在编写ac#unit test,它针对目标数据库validationORM类的字符串属性,始终是SQL 2008,以及数据映射到的类。 检查指定的外键在DB中是否有效很容易: static private bool ConstraintExsits(string table, string column, ConstraintType constraintType) { string constraintTypeWhereClause; switch (constraintType) { case ConstraintType.PrimaryKey: constraintTypeWhereClause = “PRIMARY KEY”; break; case ConstraintType.ForeignKey: constraintTypeWhereClause = “FOREIGN KEY”; break; default: throw new ArgumentOutOfRangeException(“constraintType”); } var cmd = new SqlCommand( @”SELECT a.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS a JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE b on a.CONSTRAINT_NAME = b.CONSTRAINT_NAME […]

如何从Entity Framework更新主键?

我有桌子 eventid int — not PK key but with autoincrement jobid — PK autoincrement disabled userid int — PK autoincrement disabled 要更新jobID,我会执行以下操作: var itemforupdate = context.table.where(n=>n.eventid == someparameter).FirstorDefault() 我正确地从数据库中获取项目,但在分配时: itemforupdate.jobID = 5; context.SaveChanges(); 在context.SaveChanges()我得到错误: 属性“jobID”是对象的关键信息的一部分,无法修改 如何从Entity Framework更新jobID来解决这个问题?

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 => […]

entity framework通过将当前值增加一而不选择来更新一列

我想要实现的是简单的SQL查询: UPDATE TABLE SET COLUMN = COLUMN + 1 有没有办法在没有首先将所有记录(数千)加载到内存并循环遍历每个记录以增加列然后将其保存回来的情况下实现它? 编辑 我尝试了原始的SQL,它工作。 我必须从连接字符串和连接上下文中的数据库模式名称决定sql提供程序。 之后,我将使用相应的sql查询来更新表。 对于SQL,它看起来像UPDATE schemaname.TABLE SET COLUMN = COLUMN + 1 。 对于POSTGRESQL,我必须双重引用模式名称,表名和列名: UPDATE“schemaname”。“TABLE”SET“COLUMN”=“COLUMN”+ 1 。

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试图逃避不需要它的字符串,我怎么能让它停止?

如何从SqlDataReader读取SQL Server COUNT

我正在尝试使用C# SqlDataReader查找表的计数,但我一直在寻找 没有数据时无效的读取尝试 我的代码: string sql = “SELECT COUNT(*) FROM [DB].[dbo].[myTable]”; SqlCommand cmd = new SqlComman(sql, connectionString); SqlDataReader mySqlDataReader = cmd.ExecuteReader(); int count = mySqlDataReader.GetInt32(0); // Here is where I get the error. 我知道我有一个与数据库的有效连接,因为我可以在许多地方读取和写入, COUNT(*)的特殊之处是我无法正确读取它? 如何填充int count ?

LINQ查询与GROUP和SUM

请帮我解决使用LINQ和GROUP和SUM的问题。 // Query the database IEnumerable best_sellers = from bs in (db.MYDATABASE).Take(25) where bs.COMPANY == “MY COMPANY” group bs by bs.PRODCODE into g orderby g.Sum(g.MQTY) select new BestSeller() { product_code = , product_description = , total_quantity = }; 我希望: 从db.MYDATABASE获取前25项 将所有结果分组为bs.PRODCODE 按每个bs.PRODCODE的总和订购 公司在哪里是“我的公司” 然后将数据传输到我的BestSeller()对象 我很困惑,因为只要我将我的group添加到混音中,我的bs变量就变得无用了。

为什么左外部加入?

奇怪的一个。 (可能根本不奇怪) 我有3个对象,员工,罗塔和部门。 public class Employee { public int Id { get; set; } public String Name { get; set; } public virtual Department Department { get; set; } } internal class EmployeeMapping : EntityTypeConfiguration { public EmployeeMapping() { HasKey(a => a.Id); Property(a => a.Id).HasColumnName(“UserId”); HasRequired(a => a.Department).WithOptional().Map(a => a.MapKey(“DepartmentId”)); } } public class Department […]

关于生成无法追踪的发票ID的想法

我想在我的应用中为客户打印发票。 每张发票都有一个发票ID 。 我希望ID为: 顺序(最近输入的ID迟到) 32位整数 不像1 2 3那样容易追踪,所以人们无法分辨出我们销售的商品数量。 我自己的想法:自特定日期和时间以来的秒数 (例如1/1/2010 00 AM)。 任何其他想法如何生成这些数字?

在EF Code First中跟踪SQL查询

我正在使用Entity Framework Code First,我希望能够记录DbContext生成的所有SQL查询。 在Linq to sql中有一个DB日志,我似乎无法在EF中找到它。 然后我可以将它们放在日志中或输出到页面。 我正在使用EntityFramework Assembly的4.1.0.0版。