我的 Windows 服务是一个 .NET 应用程序。该服务依赖于我使用 EF 4.3 Code First 的数据访问。当我的服务运行并尝试访问数据时,我收到以下错误。
FullPurgeAndReplace() 中发生错误:System.InvalidProgramException:公共语言运行时检测到无效程序。at System.Data.Entity.DynamicProxies.MOMInventoryItem_3ED5D5176D2C03867C62DD8E4381A882350CFD9CD931F3CD551623A6EF5C4D8E.set_Id(Decimal ) at lambda_method(Closure , Shaper ) at System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func 1.ReadNextElement(Shaper shaper) at System .Data.Common.Internal.Materialization.Shaper 1..ctor(IEnumerable 1 source) ... 删除更多
2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet)
at lambda_method(Closure , Shaper ) at System.Data.Common.Internal.Materialization.Coordinator1.SimpleEnumerator.MoveNext() at System.Collections.Generic.List
1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
在同一台机器上,我有一个 Web 应用程序,它依赖于同一个数据访问项目并且运行没有问题。对于 IIS 中的那个网站,我确实为相应的应用程序池选中了启用 32 位应用程序。
我研究了这个问题,发现它可能与错误中的实体(MOMInventoryItem)具有十进制主键这一事实有关。我别无选择,因为我正在与现有系统集成。但是,这应该是一年多前EF 4.0 的一个已知问题,我希望它现在可以解决。
这是我的实体的一些代码:
[Table("STOCK")]
public class MOMInventoryItem
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None), Column("STOCK_ID")]
public virtual decimal Id { get; set; }
同样,这可以通过托管在 IIS 中的 MVC 应用程序正常工作,但作为 Windows 服务失败,两者都在同一 Windows 2008 R2 服务器上。它也适用于我的 DEV 机器(Win7/VS11)。 我的问题是什么,我该如何永久解决或解决它?
一如既往,我们非常感谢您的帮助,并在可能的情况下给予回报。