sql >> Databáze >  >> RDS >> Sqlserver

Může LINQ-to-SQL při vkládání vynechat nespecifikované sloupce, aby se použila výchozí hodnota databáze?

Bohužel Linq to SQL nepodporuje výchozí hodnoty databáze. Viz první otázka zde:

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

Navrhují, abyste poskytli implementaci metody Insert pro danou entitu. Podpis je

partial void Insert[EntityName](Entity instance)

Takže pokud jste měli entitu nazvanou Osoba, u které jste chtěli mít výchozí hodnotu "Home" pro pole PhoneNumberDesc, můžete ji implementovat takto:

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

Možná vám projde implementace události OnCreated, která se volá s každým konstruktorem pro každou entitu. Tento článek trochu vysvětluje, jak rozšiřitelnost ukazuje Linq To SQL:http://msdn.microsoft.com/en-us/library/bb882671.aspx

Suma sumárum, řešení je opravdu na hovno. Hodně štěstí!



  1. podivné kódování znaků uložených dat, starý skript je ukazuje dobře, nový ne

  2. Vrátit aktuální přihlašovací jméno na SQL Server (T-SQL)

  3. Jak převést skript mssql na mysql

  4. Jak správně používat Oracle ORDER BY a ROWNUM?