小编Min*_*Min的帖子

.Net继承 - 自动依赖引用行为问题

我遇到了一个我刚刚注意到的奇怪问题.

如果您有3个项目的解决方案

**注意讨论后编辑**

项目LibA - 拥有ClassA

namespace LibA
{
    public class ClassA
    {
        public override string ToString()
        {
            return "The logic in class A!";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

项目LibB - 拥有ClassB

using LibA;

namespace LibB
{
    public class ClassB
    {
        public ClassA a;

        public ClassB()
        {
            a = new ClassA();
        }

        public object Foo()
        {
            return a;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

LibC项目 - 拥有ClassC

using LibB;

namespace LibC
{
    public class ClassC
    {
        public ClassB b;

        public ClassC()
        {
            b = new …
Run Code Online (Sandbox Code Playgroud)

c# inheritance dependencies reference

7
推荐指数
1
解决办法
1539
查看次数

EntityFramework首先使用数据库检测复杂类型

我们正在使用EntityFramework并且已经使用Database First进行了长途旅行.我们有多个上下文和许多实体.虽然我们接受了首先进行代码项目的概念,但我们希望探索EF可用的其他可能性.

我们正在使用最新版本的EF,当前版本为6.0.2

我们有很多常用字段的表,例如审计字段"CreatedBy","CreatedDate","UpdatedBy"和"UpdatedDate",我们认为在这里使用ComplexType是完美的.

在使用这些字段的表中,当我们从数据库生成代码时,它会以raw格式提取字段.然后,我们在模型浏览器中删除它,添加复杂类型,然后将复杂属性映射到DB中的字段名称.

在这个实验中,我们运行"从模型生成数据库"而不映射字段以查看结果列名称是什么,以及任何约定或自动魔术是否允许双向行为(将复杂类型转换为列并将列识别为复杂的类型).

这导致列名称的复杂类型后缀为"_"和字段名称.我们进行了测试,当我们重新生成模型时,它没有从模型中的数据库中拉出复杂类型.

有没有一种正确的方法让EF先检测具有数据库的表中的复杂类型?我可以编写一些代码工厂,构建器,策略或模板吗?

我们的主要动机是我们有很多表可以支持,我们接受频繁的更改,我们希望阻止团队中的人忽略这一步并打破代码库.

非常感谢StackOverflowians的时间!

- 编辑 -

虽然这并没有解决使用复杂类型的自动检测的问题,但这解决了Developer在每次运行T4模板更新时破坏模型的问题.

http://www.ninjacrab.com/2015/02/07/update-entityframework-detecting-complex-type-with-database-first/

c# database entity-framework

5
推荐指数
1
解决办法
1137
查看次数