小编Gre*_*eMD的帖子

实体框架核心 - 将小数精度和比例设置为所有小数属性

我想将所有十进制属性的精度设置为(18,6).在EF6中,这非常简单:

modelBuilder.Properties<decimal>().Configure(x => x.HasPrecision(18, 6));
Run Code Online (Sandbox Code Playgroud)

但我似乎无法在EF Core中找到类似的东西.删除级联删除约定并不像在EF6中那么简单,因此我找到了以下解决方法:

EF6:

modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
Run Code Online (Sandbox Code Playgroud)

EF核心:

foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
    relationship.DeleteBehavior = DeleteBehavior.Restrict;
Run Code Online (Sandbox Code Playgroud)

我看后这个,我尝试了类似的方法:

foreach (var entityType in modelBuilder.Model.GetEntityTypes()
    .SelectMany(x => x.GetProperties())
    .Where(x => x.ClrType == typeof(decimal)))
        {
            // what to do here?
        }
Run Code Online (Sandbox Code Playgroud)

我想如果我在正确的轨道上以及如何继续,或者如果没有,我应该开始在所有decimal属性上放置数据注释.

c# entity-framework entity-framework-core asp.net-core

31
推荐指数
1
解决办法
2万
查看次数

在Asp.Net Core中加载XSLT

如何从ASP.NET Core中的字符串加载XSLT文件?

在完整的.NET Framework中,我可以使用:

XslCompiledTransform objXSLTransform = new XslCompiledTransform();    
objXSLTransform.Load(strXSLTFile); 
Run Code Online (Sandbox Code Playgroud)

.net xml xslt asp.net-core

6
推荐指数
1
解决办法
3129
查看次数

使用重叠的DbSet将DbContext拆分为多个上下文

我有一个DbContext,目前可以容纳+80个实体,仅完成了4个主要模块,但还有3个要去,而且它们还很大,因此最多可以轻松完成150个。我认为现在是划分上下文的最佳时机。每个模块都使用自己的实体,并获得自己的上下文,但是所有模块都使用一组实体,所以这里是mu问题:

我是否应该拥有一个将包含所有重叠实体的MainContext,但是:

  • FK依赖关系将如何处理?
  • using (var db = new context)由于我需要从每个模块访问主上下文,因此将嵌套多少性能问题。

我是否应该将重叠的实体放在所有上下文中,但是

  • 映射会发生什么,不是每个上下文都会尝试映射它自己的实体并得到错误吗?
  • 我是否应该排除重叠上下文在除其中一个上下文之外的所有上下文上的映射?

我应该停留在一个上下文中吗?

还有其他建议吗?

c# dbcontext entity-framework-6

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

IEnumerable <>在未引用的程序集中定义 - 新的NuGet类库项目

我正在使用VS2015社区,我安装了.NET 4.6.01040,并按照这些说明安装了ASP.NET 5.

我想开始将一个站点从MVC5迁移到MVC6所带来的所有其他更新,所以我开始使用包含我的Data模型的Entity Class库项目.这是我的project.json文件的样子:

{
  "version": "1.0.0-*",
  "description": "test.Entities Class Library",
  "authors": [ "me" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",
  "frameworks": {
    "net461": {
      "dependencies": { "System.Runtime": "4.0.0.0" }
    },
    "dotnet5.4": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Runtime": "4.0.21-beta-23516",
        "System.Linq": "4.0.1-beta-23516"
        "System.Collections": "4.0.11-beta-23516",
        "System.Threading": "4.0.11-beta-23516"
      }
    }
},
  "dependencies": {
    "EntityFramework.Core": "7.0.0-rc1-final",
  }
}
Run Code Online (Sandbox Code Playgroud)

我改变了框架类型"net451","net461"因为我认为那是问题所在,我也尝试添加对依赖项的引用,但没有运气......

错误发生在这里:

[NotMapped]
public decimal TotalOrders => Math.Round(Orders.Where(x => x.Code.StartsWith("5")
                             .Sum(x => x.Amount),MidpointRounding.AwayFromZero);
Run Code Online (Sandbox Code Playgroud)

完整的错误是:

CS0012 …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc asp.net-core-mvc asp.net-core

5
推荐指数
2
解决办法
6850
查看次数

在 form.setValues() 上多次触发异步验证

我正在使用 Angular 5,反应形式方法。

我在 Angular Material 对话框中有一个表单,用于输入和编辑数据。我的构造函数如下所示:

constructor(public formBuilder: FormBuilder,
    public documentService: DocumentService, 
    @Inject(MAT_DIALOG_DATA) public data: any) {
    this.createForm();
    if (this.data.edit) {
        this.setValues();
    }
    this.setTitles();
}
Run Code Online (Sandbox Code Playgroud)

createForm调用创建了我进行异步验证的反应式表单:

createForm() {
    this.documentForm = this.formBuilder.group({
        ...
        documentNumber: new FormControl('',
                {
                    updateOn: 'blur',
                    validators: [Validators.required],
                    asyncValidators: [this.checkDocumentNumber.bind(this)]
                }),

        ...
    });
}
Run Code Online (Sandbox Code Playgroud)

如果对话框处于“编辑”模式,则setValues调用会修补需要编辑的数据:

setValue() {
    this.form.patchData({
        ...
        documentNumber: this.data.document.documentNumber
        ...
    });
}
Run Code Online (Sandbox Code Playgroud)

setTitles调用设置对话框标题。

checkDocumentNumber调用boolean从服务器获取一个值:

checkDocumentNumber(control: AbstractControl): Observable<ValidationErrors | null> {
    const formValue = this.form.value;
    return …
Run Code Online (Sandbox Code Playgroud)

typescript angular angular5

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

在csproj中定义AspNetCoreHostingModel引发“ npm”异常启动失败

ASP.NET Core 2.2更新具有AspNetCoreHostingModel可以设置为InProcess或的此新属性OutOfProccess。如果我在中添加该属性,而csproj与设置的选项无关紧要,则会出现以下错误:

AggregateException: One or more errors occurred. (One or more errors occurred. (Failed to start 'npm'. To resolve this:
[1] Ensure that 'npm' is installed and can be found in one of the PATH directories.
Current PATH enviroment variable is: (there are some 20 paths before this last one);C:\Program Files\nodejs;
Make sure the executable is in one of those directories, or update your PATH.
Run Code Online (Sandbox Code Playgroud)

路径npm已经在此处说明,那么还有什么问题呢?

asp.net-core

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

C#中的堆栈溢出

我有这个寄存器,可以记录我需要的所有对象:

public static class ObjectRegister
{
    public static List<IObject> RegisteredObjects = new List<IObject>();
    static ObjectRegister()
    {
        RegisteredObjects.Add(new Object1());
        RegisteredObjects.Add(new Object2());
        RegisteredObjects.Add(new Object3());
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来我有这个检查列表的函数,如果列表中的项目通过测试,它会创建一个对象实例并将其添加到列表中:

public static List<IObject> Scan(List<parametar> list)
    {
        List<IObject> neededObjects = new List<IObject>();
        foreach (IObject registeredObject in ObjectRegister.RegisteredObjects)
        {
            foreach (parametar param in list)
            {
                if (registeredObject.Test(param)) //returns true or false 
                {
                    neededObjects.Add(registeredObject.CreateInstance(param));
                }
            }
        }
        return connectedObjects;
    }
Run Code Online (Sandbox Code Playgroud)

这是Object1的CreateInstace方法:

public IObject CreateInstance(parametar param)
    {
        return new Object1(param);
    }
Run Code Online (Sandbox Code Playgroud)

这是构造函数:

public Object1(parametar newParam)
    {
        this.param = newParam; …
Run Code Online (Sandbox Code Playgroud)

.net c#

0
推荐指数
1
解决办法
174
查看次数