Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy LINQ-to-SQL może pominąć nieokreślone kolumny podczas wstawiania, aby była używana wartość domyślna bazy danych?

Niestety, Linq to SQL nie obsługuje domyślnych wartości bazy danych. Zobacz pierwsze pytanie tutaj:

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

Sugerują, że zapewniasz implementację metody Insert dla danej jednostki. Podpis będący

partial void Insert[EntityName](Entity instance)

Więc jeśli masz encję o nazwie Person, którą chcesz mieć domyślną wartość "Home" dla pola PhoneNumberDesc, możesz to zaimplementować w ten sposób:

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

Być może uda Ci się zaimplementować zdarzenie OnCreated, które jest wywoływane z każdym konstruktorem dla każdej encji. W tym artykule wyjaśniono nieco, w jaki sposób punkty rozszerzalności w Linq To SQL:http://msdn.microsoft.com/en-us/library/bb882671.aspx

Podsumowując, rozwiązanie naprawdę jest do bani. Powodzenia!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać definicję kolumny wyliczanej w SQL Server za pomocą T-SQL

  2. Prawidłowe wykorzystanie transakcji w SQL Server

  3. SQL Server 2016:Projektant zapytań

  4. wybierz * z tabeli vs wybierz colA, colB, itp. z tabeli ciekawe zachowanie w SQL Server 2005

  5. Dlaczego ISNUMERIC('.') zwraca 1?