C# Linq到Sql问题
我有两个表用户和查询。它们通过查询表中的FK(用户ID)连接。 我需要添加查询,例如,由登录名为“Bob”的用户添加到所有用户 下面是我正在使用的一段代码:C# Linq到Sql问题,c#,sql,database,linq-to-sql,C#,Sql,Database,Linq To Sql,我有两个表用户和查询。它们通过查询表中的FK(用户ID)连接。 我需要添加查询,例如,由登录名为“Bob”的用户添加到所有用户 下面是我正在使用的一段代码: public bool SaveUserQuery(string userName, Query query) { var db = new UserDataClassesDataContext(); Table<User> users = db.Users; if (
public bool SaveUserQuery(string userName, Query query) {
var db = new UserDataClassesDataContext();
Table<User> users = db.Users;
if ( userName.ToLower() == "bob" ) {
foreach ( var user in users ) {
var tempQuery = new Query();
tempQuery.Name = query.Name;
tempQuery.FolderName = query.FolderName;
tempQuery.Layout = query.Layout;
tempQuery.Description = query.Description;
tempQuery.Query1 = query.Query1;
tempQuery.UserID = user.UserId;
try {
user.Queries.Add(q);
}
catch (Exception e) {
Logger.Log.Error("attach", e);
}
}
db.SubmitChanges();
return true;
}
}
public bool SaveUserQuery(字符串用户名,查询){
var db=new UserDataClassesDataContext();
表用户=db.users;
if(userName.ToLower()=“bob”){
foreach(用户中的var用户){
var tempQuery=新查询();
tempQuery.Name=query.Name;
tempQuery.FolderName=query.FolderName;
tempQuery.Layout=query.Layout;
tempQuery.Description=query.Description;
tempQuery.Query1=query.Query1;
tempQuery.UserID=user.UserID;
试一试{
user.querys.Add(q);
}
捕获(例外e){
Logger.Log.Error(“附加”,e);
}
}
db.SubmitChanges();
返回true;
}
}
添加时会引发错误:
INSERT语句与外键约束“FK_querys_Users”冲突。冲突发生在数据库“OLAPUsers”、表“dbo.Users”、列“UserId”中
如何解决此问题或归档我的目标?确保在DB模式中正确设置了主键。您可以在没有主键的情况下查询表,但除非所有设置都正确,并且数据库的数据上下文视图是最新的,否则无法执行插入操作。尝试以下操作:
public bool SaveUserQuery(string userName, Query query)
{
var db = new DataContext();
if ( userName.ToLower() == "bob" )
{
List<Query> queries = new List<Query>();
foreach ( var user in db.GetTable<Users>())
{
Query tempQuery = new Query(query.Name, query.FolderName, query.Layout, query.Description, query.Query1, user.UserId);
//and ofc create this constructor
queries.Add(tempQuery);
}
db.GetTable<Query>().InsertAllOnSubmit(queries);
db.SubmitChanges();
return true;
}
}
public bool SaveUserQuery(字符串用户名,查询)
{
var db=new DataContext();
if(userName.ToLower()=“bob”)
{
列表查询=新建列表();
foreach(db.GetTable()中的var user)
{
Query tempQuery=新查询(Query.Name、Query.FolderName、Query.Layout、Query.Description、Query.Query1、user.UserId);
//和ofc创建这个构造函数
添加(tempQuery);
}
db.GetTable().InsertAllOnSubmit(查询);
db.SubmitChanges();
返回true;
}
}
您的UserDataClassesDataContext工作正常吗?如果UserId属性设置不正确,则可能会导致此问题。设置断点并在迭代时检查user.UserId的值。确保这些值存在并对应于数据库中的有效用户ID。感谢帮助,问题在于外键约束,不知道我是如何解决的,但它只起作用=P