我有一个使用 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/