我想将所有十进制属性的精度设置为(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属性上放置数据注释.
如何从ASP.NET Core中的字符串加载XSLT文件?
在完整的.NET Framework中,我可以使用:
XslCompiledTransform objXSLTransform = new XslCompiledTransform();
objXSLTransform.Load(strXSLTFile);
Run Code Online (Sandbox Code Playgroud) 我有一个DbContext,目前可以容纳+80个实体,仅完成了4个主要模块,但还有3个要去,而且它们还很大,因此最多可以轻松完成150个。我认为现在是划分上下文的最佳时机。每个模块都使用自己的实体,并获得自己的上下文,但是所有模块都使用一组实体,所以这里是mu问题:
我是否应该拥有一个将包含所有重叠实体的MainContext,但是:
using (var db = new context)由于我需要从每个模块访问主上下文,因此将嵌套多少性能问题。我是否应该将重叠的实体放在所有上下文中,但是
我应该停留在一个上下文中吗?
还有其他建议吗?
我正在使用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) 我正在使用 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) 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已经在此处说明,那么还有什么问题呢?
我有这个寄存器,可以记录我需要的所有对象:
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) asp.net-core ×4
c# ×4
.net ×2
angular ×1
angular5 ×1
asp.net ×1
asp.net-mvc ×1
dbcontext ×1
typescript ×1
xml ×1
xslt ×1