Tag: sql

使用linq到sql后端通过WCF查询DTO对象

我正在开发一个项目,我们需要针对WCF服务创建复杂的查询。 该服务在后端使用linq to sql并将查询投影到数据传输对象,如下所示: dbContext.GetQueryable() .Where(x => x.Id == formatId) .Select(x => FormatHelper.PopulateMSFormat(x)) .ToList(); 我想要做的是在客户端指定一个查询,假设我想查询具有某个属性或其中几个属性的所有格式。 这个风格的东西: var assets = client.QueryForAssets()。Where(x =>(x.name ==“Test”|| x ==“Arne”)&& x.doe ==“john”); 我知道我无法通过WCF返回IQueryable,但是可以使用OData服务完成类似的事情。 问题是我必须返回DTO和OData让我很容易绑定到L2S-datacontext,它暴露我的数据模型而不是DTO。 那么是否有一种很好的方法可以将针对DTO的查询序列化,从而有效地传播到l2s层? 我想过编写自己的查询语言,但我发现将正确的表达式树构建为l2s的谓词是很困难的,因为没有从DTO到linq类的映射。

如何用SQL重新排列字符串?

Declare @CustTotalCount as int Declare @CustMatchCount as int select @CustTotalCount = count(*) from ENG_CUSTOMERTALLY select @CustMatchCount = count(*) from Task where MPDReference in( select ENG_CUSTOMERTALLY_CUSTOMERTASKNUMBER from dbo.ENG_CUSTOMERTALLY) if(@CustTotalCount>@CustMatchCount) select distinct substring(ENG_CUSTOMERMYCROSS_MYTECHNIC_TASK_NO, charindex(‘-‘, ENG_CUSTOMERMYCROSS_MYTECHNIC_TASK_NO) + 1, 1000) from dbo.ENG_CUSTOMERMYCROSS where ENG_CUSTOMERMYCROSS_CUSTOMER_NUMBER in( select ENG_CUSTOMERTALLY_CUSTOMERTASKNUMBER from ENG_CUSTOMERTALLY1 except select MPDReference from Task ) 我可以转换 – A320-200001-01-1(1) – […]

NHibernate中的项目集合

我可以在NHibernate中进行项目收集吗? 例如: User { UserGuid, IList UserGroups, } User userEntity = null; _session .StatefulSession.QueryOver(() => userEntity) .SelectList(list => list .Select(x => x.UserGuid).WithAlias(() => userEntity.UserGuid) //How can I project group collection here? .Select(x => x.Groups).WithAlias(() => userEntity.Groups) ) .TransformUsing(Transformers.AliasToBean()) .List();

带参数的SqlCommand

我使用以下代码从SQL Server表中进行选择: using (SqlConnection con = new SqlConnection(SqlConnectionString)) { string sql = @”SELECT * FROM movies WHERE title like ‘%’ + ‘” + searchQuery + “‘ + ‘%'”; using (var command = new SqlCommand(sql, con)) { con.Open(); using (var reader = command.ExecuteReader()) { while (reader.Read()) { …. } } } } 它工作得很好,但我想阻止SQL注入,所以我尝试使用: using (SqlConnection con […]

插入,选择和更新DateTime

我有一个时间表,列名为time,数据类型为Date 。 在asp.net中,我想要一个查询来插入日期,另一个在2日期之间选择。 我已经尝试过了: string data = DateTime.Now.ToShortDateString(); //date= 28/10/2014 -> dd/mm/yyyy string comando = “INSERT INTO example (date) values ‘” +data+ “+”‘”; 我使用该查询在2个日期之间进行选择 select * from example where date >= ’25/10/2014’ and date <= '28/10/2014' 我已经尝试使用数据类型varchar但它不起作用。 所以我正在尝试使用数据类型date 。 但是当我执行查询INSERT我收到一个错误 从字符串转换日期和/或时间时转换失败。 有人可以帮帮我吗? 我唯一的问题是将时间节省在表中。 如果可能,我想要日期格式: dd/mm/yyyy 更新: 我有更新行有日期(日期)和varchar(名称)的问题这是我的代码: string comando = “UPDATE example set name=@name WHERE […]

在C#中形成参数化SQL语句的正确方法是什么

目标:使用C#和SQL2008正确设置参数化SQL插入语句 问题:在for循环中使用以下语句,因此必须清除值。 在运行此代码时,它表示在250附近存在语法错误。代码如下 for (int i = 0; i < Rows.Count; i++) { cmd.Parameters.Clear(); struct Row = (struct)Rows[i]; sql = "@RowName varchar(250) = null " + "INSERT INTO " + "database.dbo.table" + "(database.dbo.tabe.RowName) " + "VALUES " + "(@RowName) "; cmd.CommandText = sql; cmd.Parameters.AddWithValue("@RowValue ", Row.RowName); } 提前感谢您的更正,意见和建议。

SQL Compact Edition插入C#

我试图将一些值插入到这样的SQL CE数据库中,没有任何反应。 我做错了什么? string strConn = Properties.Settings.Default.SqlConnectionString; using (SqlCeConnection con = new SqlCeConnection(strConn)) { con.Open(); using (SqlCeCommand cmd = new SqlCeCommand(“insert into CustTable(ID, Name) values (@Val1, @val2)”, con)) { cmd.Parameters.AddWithValue(“@Val1”, customer.ID); cmd.Parameters.AddWithValue(“@Val2”, customer.Name); cmd.CommandType = System.Data.CommandType.Text; cmd.ExecuteNonQuery(); } }

批处理的sqlclient命令中的Scope_identity()

我通常在插入记录时使用存储过程以确保获得正确的scope_identity()值。 我现在需要在使用SqlClient时获取插入记录的id字段。 我的理解是,如果我使用insert批处理scope_identity()命令,那么它仍然与insert命令在同一范围内? 像下面的东西。 虽然很难validation……我会100%获得正确的id值吗? (id字段是自动递增bigint – Sql Server) long newid = 0; using (SqlConnection conn = new SqlConnection(….)) { conn.Open(); using (SqlCommand comm = new SqlCommand (“insert into …. ; select SCOPE_IDENTITY();”, conn)) { SqlDataReader reader = comm.ExecuteReader(); if (reader.HasRows) { reader.Read(); newid = Convert.ToInt64(reader[0]); } } }

C# – 网站 – SQL Select语句

我想使用select语句来查找是否存在已存在的记录。 我把代码放在下面,但它在dReader = comm.ExecuteReader()时抛出错误; 而且我不确定为什么。 有帮助吗? string connString = “Data Source=KIMMY-MSI\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True”; SqlDataReader dReader; SqlConnection conn = new SqlConnection(connString); SqlCommand comm = new SqlCommand(); comm.Connection = conn; comm.CommandText = “SELECT * FROM Customers WHERE CustomerID == ” + txtID.Text; comm.Connection.Open(); dReader = comm.ExecuteReader(); if (dReader.HasRows == true) { Response.Write(“Exists”); } 错误: Invalid Column Name […]

用于从不同表中进行选择的nhibernate标准

我有以下表格模型: 我希望以下SQL命令作为nhibernate标准: SELECT * FROM单位WHERE OID IN(选择OID来自订单WHERE PONumber 0 ORDER BY PONumber LIMIT 5) – >换句话说:最后5个订单 编辑: 我的映射 Unit.hbm.xml Order.hbm.xml Employee.hbm.xml EDIT2: 这是我的查询命令: var query = m_hibernateSession.QueryOver(() => orderAlias) .JoinAlias(() => orderAlias.ID, () => unitAlias, JoinType.InnerJoin) .TransformUsing(Transformers.DistinctRootEntity) .OrderBy(x => x.PONumber).Desc.Take(5); 谢谢