Linq to Sql проблема - PullRequest
       9

Linq to Sql проблема

0 голосов
/ 13 сентября 2010

У меня есть 2 таблицы Users и Queries.Они связаны через FK (UserId) в таблице запросов.Мне нужно добавить запросы, добавленные, например, пользователем с логином "Bob" для всех пользователей.

Вот фрагмент кода, который я использую:

    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;
        }
    }

Выдает ошибкупри добавлении: оператор INSERT вступил в конфликт с ограничением FOREIGN KEY "FK_Queries_Users".Конфликт произошел в базе данных «OLAPUsers», таблице «dbo.Users», столбце «UserId».

Как это исправить или заархивировать цель, которую я имею?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2010

Попробуйте это:

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;
    }
}
0 голосов
/ 13 сентября 2010

Убедитесь, что ваши первичные ключи правильно настроены в схеме БД.Вы можете запрашивать таблицы без первичных ключей, но вы не можете делать вставки, если все не настроено правильно, и контекст БД в контексте данных актуален.

...