Tag: sql

如何在entity framework中使用String属性作为主键

我是EF的新手,尝试通过ETF6.0中的代码优先方法完成我的第一步,现在我遇到了问题。 我有一个房产 [Key] public string FooId { get; set; } 这是我的模型的主要关键。 但如果我跑了 PM>更新 – 数据库 包管理器控制台中的命令更新到数据库的挂起迁移我收到以下错误: 标识列’FooId’必须是数据类型int,bigint,smallint,tinyint或十进制或数字,标度为0,并且约束为不可空。 如果我将模型中的PK更改为 [Key] public int FooId { get; set; } 一切正常。 但我需要PK为类型字符串,因为它在我的情况下绝对敏感。 我知道有缺点,但对我来说这是必要的。 我在这里看到一篇较旧的post如何将字符串作为entity framework中的主键! 。 但似乎没有解决我的问题,或者我只是不理解它。 我真的不能在SQL数据库中使用字符串作为PK吗? 或者有办法做到这一点?

基于C#List过滤sql而不是过滤表

假设我有一个包含以下数据的表: 现在我想按主键部门和号码进行过滤。 我有一个必须在代码中过滤的部门和数字组合列表。 在我看来,我会创建一个导致以下结果的连接: select * from employee e inner join dynamicTable dyn on e.Department = dyn.Department and e.Number = dyn.Number; dynamicTable是我在C#代码中的List ,它有主要的过滤键,但我不知道如何将这个列表传递给数据库级别。 我不想从我的员工表中加载所有内容,并通过linq或其他方式在代码中过滤,因为我的数据库中有数百万名员工。 我已经考虑过组合primary_keys并where in (…)创建一个where in (…) ,但是firebird对其中的最多1500条记录有限制。 使用的数据库是Firebird 2.1版

如何使用Dapper有效地选择聚合对象?

让我们说我有一系列形成聚合的对象。 public class C{ public string Details {get;set;} } public class B{ public string Details {get;set;} public List Items {get;set;} } public class A{ public long ID {get;set;} public string Details {get;set;} public List Items {get;set;} } 使用Dapper,从数据库中的表中填充这些内容的最佳方法是什么(在我的情况下,它是postgres,但这不重要)。 示例中的表几乎是一对一的对象模型。 类的Items属性,表示与每个从属对象的外键关系。 即3个表,A与B具有一对多关系,B与C具有一对多关系。 因此,对于给定的AI ID,我希望我的对象也拥有所有子数据。 我最好的猜测是我应该以某种方式使用QueryMultiple,但我不确定如何做到最好。

C#数据连接最佳实践?

好的,所以这是那种自以为是的主题之一,但根据您的知识,意见和当前实践,设置以下方案的最佳方法是什么? 我正在构建一个广泛的数据输入应用程序,而且我的意思是我只有基本设置,其中包含大约15-25%的整体程序,我有大约15个部分设置的表单。 (他们仍然需要工作)我使用SQL Compact 4.0作为我的后端数据库,我不需要更广泛的数据库,因为我没有存储MMO的数据,目前这只是一个本地应用程序。 我希望能够将其设置为显示为单个窗口,只是根据菜单系统更改为各种不同的页面,但我似乎无法找到关于如何实现的良好教程,所以如果有谁知道,请赐教。 然而,问题是如何连接到数据库。 我正在使用2个SQLCE数据库,一个存储基于服务和人员的常量数据,另一个存储基于第一个数据库输入的不断变化的数据或新数据。 我已经看到了许多不同的方法来设置它,目前我正在使用一个我有一个所有其他formsinheritance的BaseForm。 在BaseForm中,我有许多表单共有的方法和变量,从而最大限度地减少了重复的代码量。 这包括两个数据库的连接字符串,以及打开与其中任何一个数据库的连接的2个方法。 像这样: internal SqlCeConnection dataConn = new SqlCeConnection(@”Data Source = |DataDirectory|\opi_data.sdf”); internal SqlCeConnection logConn = new SqlCeConnection(@”Data Source = |DataDirectory|\opi_logs.sdf”); internal SqlCeCommand command; internal void openDataConnection() // Opens a connection to the data tables { try { if(dataConn.State == ConnectionState.Closed) dataConn.Open(); } catch(SqlCeException ex) { […]

如何将数据插入SQL Server

我的编码有什么问题? 我无法将数据插入ms sql ..我使用C#作为前端,MS SQL作为数据库… name = tbName.Text; userId = tbStaffId.Text; idDepart = int.Parse(cbDepart.SelectedValue.ToString()); string saveStaff = “INSERT into tbl_staff (staffName,userID,idDepartment) ” + ” VALUES (‘” + name + “‘, ‘” + userId +”‘, ‘” + idDepart + “‘);”; SqlCommand querySaveStaff = new SqlCommand(saveStaff); try { querySaveStaff.ExecuteNonQuery(); } catch { //Error when save data MessageBox.Show(“Error […]

什么是用于捕获SQLException和重试的优秀C#编码样式

我有一个方法调用SQLServer函数对表执行自由文本搜索。 该函数有时会在第一次调用时产生一个SQLException:“对于全文查询字符串断字超时”。 所以我通常想重试该请求,因为它会在后续请求中成功。 构造重试逻辑的好方法是什么。 目前我有以下内容: var retryCount = 0; var results = new List(); using (var ctx = new UsersDataContext(ConfigurationManager.ConnectionStrings[CONNECTION_STRING_KEY].ConnectionString)) { for (; ; ) { try { results = ctx.SearchPhoneList(value, maxRows) .Select(user => user.ToDto()) .ToList(); break; } catch (SqlException) { retryCount++; if (retryCount > MAX_RETRY) throw; } } } return results;

如何从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); } } } […]

使用Dapper映射超过5种类型

我目前正在构建一个将12个表连接在一起的SELECT查询。 我一直在使用Dapper进行所有其他查询,效果很好。 问题是,generics方法只需要五个通用参数。 我以前修改过代码以支持最多6个用于另一个查询,但是现在我真的不认为我应该破解6个更多级别的generics。 有没有办法将dapper传递给一个类型数组,并将结果作为一个对象数组返回,如果必须的话我可以手动编译? 我也可能以错误的方式接近问题! 任何帮助将不胜感激!

SQL查询C#的In子句中的多个Id#

我想基本上在我的SQL查询的In子句中使用多个iD。 现在我有两个选项,一个是从文本框中获取逗号分隔的ID,或者我可以放置一个列表视图或网格视图来插入id,然后获取要在sql语句中使用的id。 你能帮我解决一下代码,怎么做这件事?

如何在网络浏览器中播放音频和video文件?

protected void Button2_Click(object sender, EventArgs e) { UploadLogic bl = new UploadLogic(); input = ListBox1.SelectedIndex >= 0 ? ListBox1.SelectedItem.ToString() : “”; DataSet ds = new DataSet(); ds = bl.Content_details(input); if (ds.Tables[0].Rows.Count > 0) { Byte[] bytes = (Byte[])ds.Tables[0].Rows[0].ItemArray.GetValue(3); Response.Buffer = true; Response.Charset = “utf-16”; Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.ContentEncoding = System.Text.Encoding.GetEncoding(“windows-1250”); Response.ContentType = ds.Tables[0].Rows[0].ItemArray.GetValue(2).ToString(); Response.AddHeader(“content-disposition”, string.Format(“File_Path; filename={0}”, input)); […]