c# - Entity Framework - 数据库和模型列/类型不匹配 - 映射选项

标签 c# asp.net sql entity-framework database-design

我有一个使用 C#/Entity Framework 的模型类,它最初接收从 Excel 文件解析的数据,但现在我必须重新连接到一个数据库,其中所有匹配的列都是 varchar 类型,但模型要多得多与 int、decimal、string、long 成员等混合。

而且模型成员类型有意义,而数据库中的所有 varchar 列却没有,真的。此外,模型类在许多地方被引用,现在更改成员类型无疑会破坏大量代码并需要大量重写。

那么,将 varchar 列映射到 C#/Entity Framework 中的基本类型的最佳方法是什么?假设我的模型类看起来像...

public class Data
    {
        public string AccountNumber { get; set; }
        public long VisitKey { get; set; }
        public long CodeKey { get; set; }
        public short GroupKey { get; set; }
        public int GroupVersion { get; set; }
        public int Classification {get;set;}
}

...和 ​​SQL 数据库中的列名等匹配,只是所有列都是 varchar。我想我现在可以假设我无法更改数据库。

最佳答案

我认为您最好的选择是利用您的 EF 模型应标记为部分类这一事实,并为其构建您自己的代码。

所以您的 EF 模型基本上是:

/* autogenerated */
public partial class MyDatabaseTable
{
   // Everything is a string because it's generated from your DB
   public string AccountNumber { get; set; }
   public string VisitKey { get; set; }
   public string CodeKey { get; set; }
}

然后创建自己的类:

public partial class MyDatabaseTable
{
   public int AccountNumberAsId { get { return int.parse(AccountNumber); } };
   ...
}

但是看起来你在做相反的事情。如果你不能改变你的模型,即使有解决方案,你也会被搞砸。也许只是构建一个新的 EF 模型?您可以为所有操作使用一个接口(interface)并更改 .tt,以便您可以处理这两种类型的模型。

关于c# - Entity Framework - 数据库和模型列/类型不匹配 - 映射选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21190390/

相关文章:

c# - SQL Compact 2008 连接字符串问题

asp.net - 在启动期间获取 Web 应用程序的 URI

sql - 选择每日/每小时数据

sql - 编写带有 "not in"子查询的 select 语句最有效的方法是什么?

php - 将排名值添加到我的 MySQL 表

c# - <nativehr>0x80070057</nativehr><nativestack></nativestack> 在 Sharepoint 列表中创建选择字段时

c# - 打开xml sdk 2.0用公式读取excel单元格值

c# - 在C#中使用 'dynamic'实现访客模式

c# - 如何从字符串中获取字体?

c# - 为什么我不能设置asp :Label Text property by calling a method in the aspx file?