Tag: sql server

在表中插入数据之前,是否可以获取Id(IDENTITY)的新值?

在表中插入数据之前,是否可以获取Id(IDENTITY)的新值? 有可能写出类似的东西: INSERT INTO Table1 SELECT *GET_NEW_IDENTITY*, Field1, Field2 FROM Table2 我需要Id的值,因为我想在Table1中插入数据,然后, 在另一个表中插入数据,该表具有链接到Table1的外键 (带有Id)

从表列读取二进制到byte 数组

我在我的应用程序中使用PBKDF2来存储用户密码。 在我的Users表中,我有一个Salt和Password列,其确定如下: // Hash the users password using PBKDF2 var DeriveBytes = new Rfc2898DeriveBytes(_Password, 20); byte[] _Salt = DeriveBytes.Salt; byte[] _Key = DeriveBytes.GetBytes(20); // _Key is put into the Password column 在我的登录页面上,我需要检索此盐和密码。 因为它们是byte []数组,所以我将它们作为varbinary(MAX)存储在我的表中。 现在我需要检索它们以与用户输入的密码进行比较。 我怎么用SqlDataReader做到这一点? 目前我有这个: cn.Open(); SqlCommand Command = new SqlCommand(“SELECT Salt, Password FROM Users WHERE Email = @Email”, cn); Command.Parameters.Add(“@Email”, SqlDbType.NVarChar).Value = […]

LocalDB:更改SQL Server的默认位置

我想知道是否可以更改(LocalDB)默认位置。 当您使用SqlLocalDB.exe创建它时,默认位置是 C:\Users\userId\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MyDB 我相信这个路径在(LocalDB)连接字符串中使用(由*.dbml文件的创建者自动生成):

entity framework更新/插入多个实体

只是我想要完成的一些概述。 我们在应用程序中保留远程数据库(第三方)的本地副本。 要下载信息,我们使用api。 我们目前按计划下载信息,然后将新记录插入本地数据库或更新现有记录。 这是它目前的工作方式 public void ProcessApiData(List apiData) { // get the existing accounts from the local database List existingAccounts = _accountRepository.GetAllList(); foreach(account in apiData) { // check if it already exists in the local database var existingAccount = existingAccounts.SingleOrDefault(a => a.AccountId == account.AccountId); // if its null then its a new record if(existingAccount […]

当孩子有身份证时,如何使用EF将多个子实体添加到对象?

我们使用EF5和SQL Server 2012以下两个类: public class Question { public Question() { this.Answers = new List(); } public int QuestionId { get; set; } public string Title { get; set; } public virtual ICollection Answers { get; set; } } public class Answer { public int AnswerId { get; set; } public string Text { get; set; […]

为什么当我插入DateTime null时我在SQL Server中有“0001-01-01”?

我尝试在我的数据库中为字段类型’date’插入值null(DateTime),但我总是得到‘0001-01-01’ 。 我不明白,这个字段“允许空值”,我不知道为什么我有这个默认值。 我正在使用C#asp .net和MVC(entity framework),这是我的代码: Budget_Synthesis newBS = new Budget_Synthesis { Budget_Code = newBudgetCode, Last_Modified_Date = null }; db.Budget_Synthesis.AddObject(newBS); Last_Modified_Date是否输入System.DateTime? 所以我不知道为什么他们改变这个’null’。 如果我尝试在我的应用程序上显示该值,我会得到01/01/0001 00:00:00 和0001-01-01与SSMS 有人可以解释为什么我不能得到一个真正的’NULL’? 最好的祝福

由于,无法与Linq一起使用.Union

我有点困惑于这个问题。 希望我会得到一些帮助。 这就是重点。 我必须用我的SQL请求填充我的DataGridView: SELECT LOT.NumLot, EtatLot, NomEmploye FROM LOT JOIN AFFECTATION_LOT on LOT.NumLot=AFFECTATION_LOT.NumLot JOIN EMPLOYE on AFFECTATION_LOT.IdEmploye=EMPLOYE.IdEmploye WHERE EtatLot=’Libéré’ or EtatLot=’Suspendu’ or EtatLot=’Démarré’ UNION SELECT NumLot, EtatLot, null FROM LOT WHERE EtatLot=’Démarré’ 首先,我在第二个“SELECT”中使用了“null”值,因为“UNION”需要有3个参数,如第一个“SELECT”,并且我的表LOT中没有“NomEmploye”数据。 无论如何,该请求在SQL中运行良好。 但是当我尝试在LINQ中使用它时 string test = “null”; var listeLotControle = (from x in entBoum.LOT join aff in entBoum.AFFECTATION_LOT on x.NumLot equals aff.NumLot […]

如何防止自引用表变为循环

这是一个非常常见的问题,但我还没有找到我正在寻找的确切问题和答案。 我有一个FK指向其自己的PK的表,以启用任意深层次结构,如经典tblEmployee,其列Manager是具有PK tblEmployee.EmployeeID的FK。 让我们在我的应用程序中说,用户 创建新员工Alice和Dave,没有经理,因为他们是CEO和总裁。 因此对于这两个记录, tblEmployee.Manager为NULL。 以Alice为经理创建新员工Bob。 然后用鲍勃作为他的经理创建查尔斯。 它们的Manager字段包含tblEmployee中另一条记录的主键值。 编辑Alice的员工记录,意思是分配Dave有她的经理(这很好),但不小心将Alice的经理设为Charles,他是树中Alice的两级。 现在该表是循环引用而不是正确的树。 确保在应用程序中无法完成步骤3的最佳方法是什么 ? 我只需要确保它将拒绝执行最后一次SQL更新,而是显示一些错误消息。 我不是在挑剔它是SQL Server中的数据库约束(必须在2008年或2012年工作),还是在我的C#app的业务逻辑层中使用某种validation例程。

将多个数据库与单个DbContext和Entites一起使用,并在运行时生成Conn String

我正在开发一个MVC 5应用程序。 最初我使用单一数据库和EF6 DataBase第一种方法,我使用我的DbContext实例来访问我的数据库,它有102个表。 我将其实例声明为: private MyEntities db = new MyEntities(); 现在我想允许多家公司使用我的应用程序,为此我必须为每个新公司创建一个新的数据库。 我通过向DbContext声明另一个构造函数来实现此目的,如下所示: public partial class NewEntities : DbContext { public NewEntities(string name) : base(name) { } } 然后将其实例声明为: public NewEntities de = new NewEntities((ConfigurationManager.ConnectionStrings[“NewEntities123”]).ToString()); 然后我打电话 db.Database.Create(); 我的新数据库已成功创建。 但是在这个方案中,每次我想添加数据库时,我都必须在我的Web.config文件中声明一个新的连接字符串。 是否有任何方法根据配置文件中的公司名称自动生成连接字符串,然后传递给构造函数以创建具有该名称的新数据库? 此外,我想为每个公司使用相同的“db”实例和DbContext访问我的所有控制器方法,以便我的相同代码可以用于所有公司。 如何为多个数据库访问单个DbContext及其实例? 我已经看过这个答案,因为它说没有方法。 但那么我的应用程序如何适用于多个用户?

如何解决警告“引用的程序集针对的是与应用程序不同的处理器”

我已经能够构建我的Windows窗体应用程序,访问SQL Server中的数据库。 除了可以备份/恢复数据库的部分之外,应用程序的所有部分都能够访问服务器。 在这部分我无法访问服务器上的数据库,并且开始相信这是因为这些警告。 以下内容究竟意味着什么?如何纠正它们? 参考assembly ‘c:\ Program Files \ Microsoft SQLServer \ 90 \ SDK \ Assemblies \ Microsoft.SqlServer.Replication.dll’ 针对与应用程序不同的处理器 参考assembly ‘C:\ WINDOWS \assembly\ GAC_32 \ Microsoft.SqlServer.BatchParser \ 9.0.242.0_89845dcd8080cc91 \ Microsoft.SqlServer.BatchParser.dll’ 针对与应用程序不同的处理器。