Tag: sql server

如何在EF-Code-First中指定主键名称

我正在使用Entity Framework Codefirst来创建我的数据库。 当我通过ODBC连接到它时,具有模式名称dbo.pk_Jobs的默认主键似乎扰乱了访问2007。 如果我手动编辑名称并删除模式名称并将此主键重命名为pk_jobs,则Access现在可以读取该表。 是否可以使用Fluent Api,数据属性或任何其他方法指定主键名称不包括架构的名称。 public class ReportsContext : DbContext { public DbSet Jobs { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().ToTable(“Jobs”); modelBuilder.Entity().HasKey(j => j.uuid); base.OnModelCreating(modelBuilder); } } public class Job { public Guid uuid{ get; set; } public int active{ get; set; } }

在一次往返中执行多个SQL命令

我正在构建一个应用程序,我想将多个查询批处理到数据库的单个往返。 例如,假设单个页面需要显示用户列表,组列表和权限列表。 所以我存储了procs(或者只是简单的sql命令,比如“select * from Users”),我想执行其中的三个。 但是,为了填充这一页,我必须进行3次往返。 现在我可以编写单个存储过程(“getUsersTeamsAndPermissions”)或执行单个SQL命令“select * from Users; exec getTeams; select * from Permissions”。 但我想知道是否有更好的方法来指定在一次往返中进行3次操作。 好处包括更容易进行unit testing,并允许数据库引擎将查询并行化。 我正在使用C#3.5和SQL Server 2008。

如何防止在没有主键时使用SqlBulkCopy插入重复记录

我收到一个包含数千条记录的每日XML文件,每条记录都是一个商业交易,我需要将其存储在内部数据库中,以便用于报告和计费。 我的印象是每天的文件只包含唯一的记录,但发现我对unique的定义与提供者的定义并不完全相同。 导入此数据的当前应用程序是C#.Net 3.5控制台应用程序,它使用SqlBulkCopy进入MS SQL Server 2008数据库表,其中列与XML记录的结构完全匹配。 每个记录只有100多个字段,并且数据中没有自然键,或者更确切地说,我可以想出的字段,因为复合键最终也必须允许空值。 目前该表有几个索引,但没有主键。 基本上整行必须是唯一的。 如果一个字段不同,则有效插入。 我看了创建整个行的MD5哈希,将其插入数据库并使用约束来阻止SqlBulkCopy插入行,但我不知道如何将MD5哈希进入BulkCopy操作而我不是确定整个操作是否会失败并在任何一个记录失败时回滚,或者它是否会继续。 该文件包含大量记录,在XML中逐行进行,查询数据库以查找与所有字段匹配的记录,然后决定插入实际上是我能够看到能够执行此操作的唯一方法。 我只是希望不必完全重写应用程序,并且批量复制操作要快得多。 有没有人知道一种方法来使用SqlBulkCopy,同时防止重复行,没有主键? 或者以不同的方式做任何建议吗?

如何从Windows应用程序调用SQL Server代理中的作业

我在SQL Server作业代理中安排了一个作业xyz 。 现在我想从我的Windows应用程序调用该作业。

C#/ SQL:通过复制和替换数据库文件进行备份和还原?

首先,这是一种分享知识而不是一个问题。 我通过使用备份和恢复命令的默认方法遇到了创建数据库备份和恢复的一些问题, 因此我通过处理数据库文件并在需要时将其恢复,开发了自己的数据库。 我将分享它以回答帮助他人。

如何从C#执行.sql?

对于某些集成测试,我想连接到数据库并运行.sql文件,该文件具有测试实际运行所需的模式,包括GO语句。 我怎么能执行.sql文件? (或者这完全是错误的方式?) 我在MSDN论坛中发现了一条显示此代码的post : using System.Data.SqlClient; using System.IO; using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Smo; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string sqlConnectionString = “Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True”; FileInfo file = new FileInfo(“C:\\myscript.sql”); string script = file.OpenText().ReadToEnd(); SqlConnection conn = new SqlConnection(sqlConnectionString); Server server = new Server(new ServerConnection(conn)); server.ConnectionContext.ExecuteNonQuery(script); } } } […]

如何从C#连接到SQL数据库?

我正在尝试为我的家庭网络编写本地程序管理和安装系统,我想我已经确定了技术: C#/。NET / WPF为客户端 Lua用于安装脚本支持(通过LuaInterface) SQL Server Express用于维护程序数据库 但是我不确定具体用于将C#连接到数据库的具体内容。 .NET框架中是否有内置的东西? 如果您对我应该用于与所述数据库进行交互的内容有何建议,则可获得奖励积分。

将数组传递给SQL Server存储过程

如何使用C#将数组变量传递给SQL Server存储过程并将数组值插入整行? 提前致谢。 SQL Server表: ID | Product | Description ——————————- 8A3H | Soda | 600ml bottle C#数组: string[] info = new string[] {“7J9P”, “Soda”, “2000ml bottle”}; SQL Server存储过程: ALTER PROC INSERT (@INFO_ARRAY ARRAY) AS BEGIN INSERT INTO Products VALUES (@INFO_ARRAY) END

多次使用Include()时,entity framework代码很慢

我一直在调试一些慢速代码,似乎罪魁祸首是下面发布的EF代码。 在稍后阶段评估查询时需要4-5秒。 我试图让它在1秒内运行。 我使用SQL Server Profiler对此进行了测试,似乎执行了一堆SQL脚本。 它还确认SQL Server完成执行需要3-4秒。 我已经阅读了有关使用Include()的其他类似问题,并且在使用它时似乎确实存在性能损失。 我试图将下面的代码分成几个不同的查询,但它并没有太大的区别。 知道我怎么能让下面更快地执行? 目前我正在处理的网络应用程序只是在等待下面的内容时显示一个空的iframe。 如果我无法获得更快的执行时间,我必须将其拆分并部分加载iframe数据或使用其他异步解决方案。 这里的任何想法也将不胜感激! using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { formInstance = context.FormInstanceSet .Includes(x => x.Include(fi => fi.FormDefinition).Include(fd => fd.FormSectionDefinitions).Include(fs => fs.FormStateDefinitionEditableSections)) .Includes(x => x.Include(fi => fi.FormDefinition).Include(fd => fd.FormStateDefinitions)) .Includes(x => x.Include(fi => fi.FormSectionInstances).Include(fs => fs.FormFieldInstances).Include(ff => […]

如何使用SqlCommand使用参数化的db名称创建DATABASE?

简而言之。 我有两个简单的助手: private SqlCommand CreateCommand(string text) { SqlCommand cmd = new SqlCommand(); cmd.Connection = connection; cmd.CommandType = CommandType.Text; cmd.CommandText = text; return cmd; } void SetParameter(SqlCommand cmd, string p, string dbName) { cmd.Parameters.Add(p, SqlDbType.NVarChar); cmd.Parameters[p].Value = dbName; } 这执行OK: var cmd = CreateCommand(“CREATE DATABASE Demo “+ @”ON (FILENAME = N’c:\demo_data.mdf’) “+ @”LOG ON (FILENAME = […]