Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何创建强类型实体_Entity Framework_Ef Code First - Fatal编程技术网

Entity framework 如何创建强类型实体

Entity framework 如何创建强类型实体,entity-framework,ef-code-first,Entity Framework,Ef Code First,阅读时,我想知道: 如何首先使用实体框架代码创建强类型实体?(特别是关于将这些强类型映射到SqlServer中的基本类型) 这有意义吗?(我从未在网上找到过这种方法的示例/教程) 假设我们有一个具有强类型Zipcode属性的地址实体/类。根据注释编辑的版本: 这是有道理的,但您从未找到任何示例,因为首先使用EF代码是不可能的。为什么? 因为EF不支持没有默认构造函数的实体或复杂类型,并且它不能使用带参数的构造函数 因为EF不提供任何类型转换,所以EF必须直接映射到基元属性 因为EF不支持没有s

阅读时,我想知道:

  • 如何首先使用实体框架代码创建强类型实体?(特别是关于将这些强类型映射到SqlServer中的基本类型)

  • 这有意义吗?(我从未在网上找到过这种方法的示例/教程)


  • 假设我们有一个具有强类型Zipcode属性的地址实体/类。

    根据注释编辑的版本:

    这是有道理的,但您从未找到任何示例,因为首先使用EF代码是不可能的。为什么?

    • 因为EF不支持没有默认构造函数的实体或复杂类型,并且它不能使用带参数的构造函数
    • 因为EF不提供任何类型转换,所以EF必须直接映射到基元属性
    • 因为EF不支持没有setter的属性

    作为一种解决方法,您可以使用私有setter和默认构造函数(可能它不必是公共的,但我没有尝试过),以及带有参数和正确映射属性的构造函数(至少)

    因此,我从“_value”字段中删除了“readonly”关键字,并在Address类中的属性“value”中添加了一个私有集,现在按预期映射了EF。问题是,这种改变是如何违背原始痴迷的原始观念的?所以我的答案是错误的。我编辑了我的答案以供其他人参考,但您应该将您的解决方案放在单独的答案中并接受它。此更改略微违反了模式(例如,它提供了默认构造函数),但如果您希望使用EF进行基元类型封装,则需要此更改。默认构造函数也是私有的