Using SQL Server 2008 and SQL Server 2005 and date time

前端 未结 8 2213
春和景丽
春和景丽 2020-12-12 12:52

I\'ve built a entity framework model against a 2008 database. All works ok against the 2008 database. When I try to update the entity on a 2005 database I get this error.

8条回答
  •  长情又很酷
    2020-12-12 13:16

    This is very frustrating and I am surprised MS decided not to make it so you could target a given SQL version. To make sure we are targeting 2005 I wrote a simple console app and call it in a PreBuild step.

    The prebuild step looks like this:

    $(SolutionDir)Artifacts\SetEdmxVer\SetEdmxSqlVersion $(ProjectDir)MyModel.edmx 2005
    

    The code is here:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml;
    
    namespace SetEdmxSqlVersion
    {
        class Program
        {
            static void Main(string[] args)
            {
                if (2 != args.Length)
                {
                    Console.WriteLine("usage: SetEdmxSqlVersion  ");
                    return;
                }
                string edmxFilename = args[0];
                string ver = args[1];
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(edmxFilename);
    
                XmlNamespaceManager mgr = new XmlNamespaceManager(xmlDoc.NameTable);
                mgr.AddNamespace("edmx", "http://schemas.microsoft.com/ado/2008/10/edmx");
                mgr.AddNamespace("ssdl", "http://schemas.microsoft.com/ado/2009/02/edm/ssdl");
                XmlNode node = xmlDoc.DocumentElement.SelectSingleNode("/edmx:Edmx/edmx:Runtime/edmx:StorageModels/ssdl:Schema", mgr);
                if (node == null)
                {
                    Console.WriteLine("Could not find Schema node");
                }
                else
                {
                    Console.WriteLine("Setting EDMX version to {0} in file {1}", ver, edmxFilename);
                    node.Attributes["ProviderManifestToken"].Value = ver;
                    xmlDoc.Save(edmxFilename);
                }
            }
        }
    }
    

提交回复
热议问题