Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Може ли LINQ-to-SQL да пропусне неопределени колони при вмъкване, така че да се използва стойност по подразбиране на базата данни?

За съжаление, Linq to SQL не поддържа стойности по подразбиране на базата данни. Вижте първия въпрос тук:

http:// social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/3ae5e457-099e-4d13-9a8b-df3ed4ba0bab/

Това, което те предлагат, е да предоставите реализация на метода Insert за въпросния обект. Подписът е

partial void Insert[EntityName](Entity instance)

Така че, ако имате обект, наречен Person, който искате да имате стойност по подразбиране „Home“ за поле PhoneNumberDesc, можете да го приложите по следния начин:

    partial void InsertPerson(Person instance)
    {
        if (string.IsNullOrEmpty(instance.PhoneNumberDesc))
            instance.PhoneNumberDesc = "Home";

        var insertParams = new List<object>();
        var insertStatement = "insert into ...";

        // build the rest of the insert statement and fill in the parameter values here...

        this.ExecuteQuery(typeof(Person), insertStatement, insertParams.ToArray());
    }

Може да успеете да се разминете с прилагането на събитието OnCreated, което се извиква с всеки конструктор за всеки обект. Тази статия обяснява малко как разширяемостта сочи в Linq To SQL:http://msdn.microsoft.com/en-us/library/bb882671.aspx

Като цяло решението наистина е гадно. Успех!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахнете странните знаци ( A с шапка) от колоната varchar на SQL Server

  2. Използване на разширени събития за регистриране на остарели функции, използвани в екземпляр на SQL сървър (пример за T-SQL)

  3. Как да конкатенирате низ и стойности NULL в SQL Server

  4. YEAR() Примери в SQL Server (T-SQL)

  5. T-SQL динамични SQL и Temp таблици