【发布时间】:2011-10-29 20:28:13
【问题描述】:
我正在尝试使用旧版 POCO 模型映射旧版数据库。由于开发的数据库和模型没有考虑实体框架,因此它们之间的一些细微差别让我卡住了。
我面临的挑战是,我想让它的工作侵入性尽可能低(不想接触数据库或模型的代码),因为依赖的代码太多。
我尝试使用代码优先方法映射实体,重用旧模型中的 POCO。因为我发现一些可以为空的数字列被映射到声明为原始 Int32(不可为空)的属性,所以一切似乎都可以找到。
例如,假设我有一张桌子:
CREATE TABLE [dbo].[SomeTable](
[Id] [int] NOT NULL,
[Descrip] [nvarchar](50) NULL,
[SomeNumericCol] [int] NULL,
CONSTRAINT [PK_SomeTable] PRIMARY KEY CLUSTERED
(
[Id] ASC
)) ON [PRIMARY]
以及对应的POCO:
public class SomeTable
{
public Int32 Id { get; set; }
public string Descrip { get; set; }
public Int32 SomeNullableCol { get; set; }
}
正如您可能看到的,列 SomeNullableCol 和相应的属性之间存在差异,因为最后一个的类型是不允许空值的原始 int。
是否有一个技巧可以使这个映射工作,而不必将 SomeNullableCol 的类型更改为可为空的 int(我的意思是 Int32?),并且如果可能的话,不要触及类的代码。
谢谢!
【问题讨论】:
标签: entity-framework-4.1 ef-code-first code-first