Tag: sql

entity framework错误:无法在表中插入标识列的显式值

我在EF上遇到这个错误。 当IDENTITY_INSERT设置为OFF时,无法在表’GroupMembers_New’中为标识列插入显式值。 Db上的列是标识增量,在EF设计文件中, StoreGeneratedPattern也是identity 。 好像EF每次尝试保存时都试图插入0。 一些建议说ID保留在表上或删除表并重新运行脚本。 有任何想法吗? 这是一些代码: GroupMember groupMember = new GroupMember(); groupMember.GroupId = group.Id; groupMember.UserId = (new UserId(group.Owner)); //groupMember.Id = _groupContext.GroupMembers.Count(); group.GroupMembers.Add(groupMember); _groupContext.SaveChanges();

除Contains()运算符外,本地序列不能用于查询运算符的LINQ to SQL实现

我在我的项目中使用LINQ,我的代码是: var SE = from c in Shop.Sections join c1 in obj.SectionObjects on c.SectionId equals c1.SectionId select c; dataGridView1.DataSource = SE; 但我在行dataGridView1.DataSource = SE;遇到此错误dataGridView1.DataSource = SE; 错误信息是: 除Contains()运算符外,本地序列不能用于查询运算符的LINQ to SQL实现。

使用.NET中的类型化数据集将SQL参数传递给IN()子句

首先道歉,因为这个网站上有类似的问题,但没有一个直接回答这个问题。 我在VS 2010中使用了类型化数据集。我在数据集中创建一个TableAdapter,其查询类似于: SELECT * from Table WHERE ID IN(@IDs) 现在,如果我调用: TableAdapter.Fill(MyDataTable,”1,2,3″) ,则会发生错误,指出VS无法将1,2,3转换为int类型。 很公平。 那么我决定在Parameter集合中将Parameter(即@IDs)类型更改为string。 再试一次 – 仍然是相同的错误消息。 那么这种类型的数据集是否可以接受我的“1,2,3”参数? 目前我只有一些参数可以通过,所以我可以轻松地创建5个左右的参数并单独传递它们,但是如果有数百个呢? 有没有办法用逗号分隔参数调用Fill()方法? (我知道我可以使用动态SQL来创建语句并执行它但更喜欢是否有另一种方式允许我保留我的类型化数据集以用于例如ReportViewer / bindingsources)

entity framework – 存储过程返回值

我试图获取存储过程的返回值。 以下是此类存储过程的示例: select Name, IsEnabled from dbo.something where ID = @ID if @@rowcount = 0 return 1 return 这是一个简单的选择。 如果找到0行,我的结果集将为null,但我仍然会有一个返回值。 这是一个不好的例子,因为这是一个选择,所以我确定我能找到是否返回了0行。 但是,在插入,删除或其他调用中,我们需要此返回值来了解是否存在问题。 我一直无法找到获得此返回值的方法。 我可以得到输出值,我可以得到结果集,但没有返回值。 如果我手动调用SQL,或者即使我使用entity framework运行SqlCommand ,我也可以获得返回值,但这不是我想要做的。 有没有人能够使用Entity Framework从存储过程中获取返回值? 谢谢您的帮助!

我们在MS-Access中有交易吗?

我正在使用C#.NET和MS-Access开发一个小型桌面应用程序。 我没有任何MS-Access的经验。 我想知道我们是否可以在Ms-Access中使用事务。 我有下面提到的情况。 插入Tbl1 插入Tbl2 我想只在插入tbl1成功时插入tbl2。 如果在tbl2中插入期间有一些exception,我想在tbl1中回滚插入。 我知道这可以很容易地在sql-server中实现,但是在ms-access的情况下,我应该如何管理它。 请帮助,提前致谢。

NHibernate – 使用Junction / Joiner表进行多对多查询

我在这里发现了非常相似的问题,但没有一个与我正在寻找的完全匹配。 我发现的两个最接近的线程是(是的,它们是不同的线程): NHibernate多对多标准 (1) NHibernate多对多标准 (2) 但是,我认为这两者都使用直接的多对多关系。 我实际上通过与联结表具有两个一对多关系来模拟多对多关系,这是非常标准的做法。 这是我的NHibernate映射: 文件: 属性: 乔伊纳: 所以我的问题与上面的第二个链接完全相同,但是使用了连接表。 所以: 给定一组属性ID,我希望运行一个查询,该查询为我提供了具有所有匹配属性的文件。 我可以轻松地对集合中的每个属性ID运行“n”查询,并比较每个列表中出现的文件ID的每个列表,但我觉得应该有一种更简单的方法可以一次使用一个查询完成所有操作。 例: File | Attributes ———-+—————————————————– foo.txt | (mode = read-only, view = visible) bar.txt | (mode = read-write, security = all, view = visible) duck.txt | (mode = read-only, view = hidden) goose.txt | (more = read-only, security = […]

如何从C#中的SQL Server数据库中检索数据?

我有一个数据库表,其中包含3列firstname , Lastname和age 。 在我的C#Windows应用程序中,我有3个名为textbox1文本框…我使用以下代码连接到我的SQL Server: SqlConnection con = new SqlConnection(“Data Source = .; Initial Catalog = domain; Integrated Security = True”); con.Open(); SqlCommand cmd = new SqlCommand(“Select * from tablename”, con); 我想从我的数据库中获取值; 如果我在textbox1给出一个值,它必须匹配数据库中的值并检索其他详细信息到相应的文本框。 我尝试过这种方法,但它不起作用: cmd.CommandText = “select * from tablename where firstname = ‘” + textBox1.Text + “‘ “; 我怎样才能检索文本框中的所有其他值?

从.net代码中停止SQL查询执行

我正在从’.net’代码执行一个存储过程。 由于存在大量数据,因此执行时间过长。 有没有办法从c#代码中停止执行? 换句话说,如果我们从数据库本身执行查询,有一个选项可以停止执行,但在代码中是否可能?

什么是传递参数到SQL,为什么我需要它?

初学者: 在我对如何将数据插入SQL Server的问题的答案中 ,他提到了传递参数而不是像我现在所拥有的字符串连接。 这对安全来说真的有必要吗? 如果是这样,究竟是什么传递参数? 当我谷歌它,我得到了很多关于存储过程。 这就是我想要的,我不知道存储过程…. 如果你能指出我正确的方向,我将不胜感激。 谢谢。 编辑: 好的,这就是我得到的。 它似乎正确地更新了数据库,最终我将硬编码的int更改为标签的输入。 请确认我是如何做到这一点不容易受到任何SQL注入或攻击。 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Security; using System.Data; using System.Data.Sql; using System.Data.SqlClient; public partial class Stats : System.Web.UI.Page { public SqlDataReader DataReader; public SqlCommand Command; string queryString = (“INSERT INTO UserData (UserProfileID, ConfidenceLevel, […]

什么是防止SQL注入的好方法?

我必须为我的OJT公司编写应用程序管理系统。 前端将在C#中完成,后端在SQL中完成。 现在我从未做过这个范围的项目; 在学校我们只有关于SQL的基础课。 不知怎的,我们的老师完全没有讨论SQL注入,我现在才通过在网上阅读它来接触它。 所以无论如何我的问题是:你如何阻止C#中的SQL注入? 我隐约认为可以通过正确屏蔽应用程序的文本字段来完成它,这样它只接受指定格式的输入。 例如:电子邮件文本框的格式应为“example@examplecompany.tld”。 这种方法是否足够? 或者.NET是否有预定义的方法来处理这样的东西? 我可以将filter应用于文本框,因此它只接受电子邮件地址格式或名称文本框,因此它不接受特殊字符吗?