在EF数据模型中为ProviderManifestToken强制“2005”

时间:2010-05-31 20:07:16

标签: .net entity-framework

每当我更新我的数据模型时,它都会使这个值达到2008,从而打破了2005年的服务器部署。除了构建动作之外,他们可以使用什么来阻止它吗?

3 个答案:

答案 0 :(得分:1)

使用MSBuild.Community Tasks,我添加了一个BeforeBuild Target,它使用XmlUpdate任务始终将ProviderManifestToken更改为2005,以防有人通过更新数据模型对其进行更改。

这是BeforeBuild目标:

<Target Name="BeforeBuild">
<XmlUpdate Prefix="ssdl"
            Namespace="http://schemas.microsoft.com/ado/2009/02/edm/ssdl"
            XPath="//ssdl:Schema/@ProviderManifestToken"
            XmlFileName="Model.edmx"
            Value="2005"/>

答案 1 :(得分:0)

如果您在更新时连接到2005 DB /服务器,那么它将保留在2005年。那个或手动编辑是我所知道的唯一方式。

答案 2 :(得分:0)

我发现了这个问题,因为我需要阻止EDMX升级到Sql Server 2012(从2008年开始)。我还使用了MSBuild.CommunityTasks,但是使用了一个稍微更通用的XPath表达式来避免使用命名空间(它已经从jnosek的回答中改变了):

    <XmlUpdate XmlFileName="Orders\Model.edmx" 
            XPath="//*[local-name() = 'Schema']/@ProviderManifestToken"
            Value="2008"/>