问题汇总

C#

Common


.net framework项目使用net standard 包报NotFileFoundException.

答:
原因:由于旧的项目文件无法通过net standard的包引用方式找到包的位置。
解决方法:在项目的.csproj文件的第一个<PropertyGroup>下加上<RestoreProjectStyle>PackageReference</RestoreProjectStyle> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>即可。

Check if Object is Dictionary or List

答:

public bool IsList(object o)
{
    if(o == null) return false;
    return o is IList &&
           o.GetType().IsGenericType &&
           o.GetType().GetGenericTypeDefinition().IsAssignableFrom(typeof(List<>));
}

public bool IsDictionary(object o)
{
    if(o == null) return false;
    return o is IDictionary &&
           o.GetType().IsGenericType &&
           o.GetType().GetGenericTypeDefinition().IsAssignableFrom(typeof(Dictionary<,>));
}

Visual Studio 2017 使用 C#7.2, build成功,发布时跳过。

问题细节:
已将项目中属性中语言版本改为7.2.
问题原因:
发布的配置和build配置不同步,导致发布时的语言版本还是以前的版本。
解决方案:

  1. 找到文件路径properties>PublishProfiles>{{你的发布配置文件名}}.pubxml
  2. 添加<LangVersion>latest</LangVersion>, 总是保持发布时的语言版本为最新。

EntityFramework


EF删除带有one-to-many relationship记录时失败。

答:EF 默认one-to-many是将外键模式设为严格模式, 导致必须清除关联的子表,才能删除父表。

怎么启用关联表中的关联表eagerloading.

答:For EF 6

using System.Data.Entity;

query.Include(x => x.Collection.Select(y => y.Property))

See Remarks for more examples.

Make sure to add using System.Data.Entity; to get the version of Include that takes in a lambda.


If you are using EF Core you can use the new method ThenInclude

query.Include(x => x.Collection)
     .ThenInclude(x => x.Property);

EF删除RelatedMember 再新增, 出现异常conflicting key values. This may be because some entities are new and have not yet received database-generated key values. In this case use the 'Add' method or the 'Added' entity state to track the graph and then set the state of non-new entities to 'Unchanged' or 'Modified' as appropriate.

答:

DbContext.Entry(updated).State = EntityState.Added;
if(existing != null)
{
       var exist = DbContext.Set<TKey>().Find(existing.Id);
       if (exist != null)
       {
            DbContext.Entry(exist).State = EntityState.Detached;
       }
      DbContext.Entry(exist).State = EntityState.Deleted;
}

Entities in 'Y' participate in the 'FK_Y_X' relationship. 0 related 'X' were found. 1 'X' is expected

答:one to many relationship, the foreign key don't use not null

ERROR 1452 : Cannot add or update a child row: a foreign key constraint fails

答: 由于在设置外键的时候, 外键对应的字段已存在且在主表找不到对应的数据。

EF使用MySQL数据库

答:msdn答案

从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

答:由于datetime2范围是"0001-01-01 到 9999-12-31",datetime的日期范围是:”1753 年 1 月 1 日到 9999 年 12 月 31 日“

EF设置数据库更新方式

答:在global.asax中设置Database.SetInitializer<MyOAContext>(setting),setting有两个选项DropCreateDatabaseAlways,DropCreateDatabaseIfModelChanges,``

Reading Related Data with the Entity Framework in an ASP.NET MVC Application

答:use eager loading.

cascade deletes 联级删除

答: ctx.Parent.Remove(parent);
关闭cascade deletes:

public class SchoolContext<: DbContext
{
    public SchoolContext():base("MySchool")
    {
                }

    public DbSet<Student> Students { get; set; }
    public DbSet<Standard> Standards { get; set; }
        
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Student>()
            .HasOptional<Standard>(s => s.Standard)
            .WithMany()
            .WillCascadeOnDelete(false);
    }
}

解决EntityFrameworkCore “无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。”

答:
Import-Module {项目目录}\packages\microsoft.entityframeworkcore.tools\1.1.1\tools\EntityFrameworkCore.psd1

EntityFramework在使用Include方法时发生FormatException:该字符串未被识别为有效的布尔值。

问题原因:当数据库为mysql时,模型中bool类型的属性被自动映射为数据库库中tinyint(1)类型。EF内部将查询结果表中对应的字段转换为string类型。调用Boolean.Parse()抛出异常。
解决方案:表中类型强制采用bit类型。
具体实施:在模型bool类型属性上加特性[Column(TypeName="bit")]

Pomelo v2.0.1在EntityFrameworkCore v2.1.0下迁移数据库抛出Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder..ctor(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper)'.

错误原因:最新版EntityFrameworkCore和Pomelo不适配。
解决方案: 回退EntityFrameworkCore版本到v2.0.3.

WebApi


DELETE Request get 405 method isn't found In IIS.

答:

  1. asp.net core
    1.1. 添加web.config
    1.2. web.config的<system.webServer> 内补充
<modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
</modules>
  1. asp.net
    web.config的<system.webServer>内补充
<modules>
      <remove name="WebDAVModule" />
</modules> 
<handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

asp.net core Filter不起作用。

答:继承的子类,重写的方法记得加override,而不是IDE自动补全的virtual

URL parameters in MVC 4 Web API

答:

/controller/1?p=100
public A Get(int id, int p) {}

How to get POST data in WebAPI?

答:

public async Task Post() {        
   dynamic obj = await Request.Content.ReadAsAsync<JObject>();
   var y = obj.var1;
}

JSON


c#解析json最好的方式

答:使用dynamic类型。

An error occurred while retrieving package metadata for 'Newtonsoft.Json.10.0.3'

答:Remove the package:

  `Uninstall-Package Newtonsoft.Json -force`
  Reinstall the package:
  `Install-Package Newtonsoft.Json`
  Or you can use 'Update-Package' :
  `Update-Package Newtonsoft.Json`

Newtonsoft JSON - How to use the JsonConverter.ReadJson method to convert types when deserializing JSON

答:

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
    MyCustomType myCustomType = new MyCustomType();//for null values        

    if (reader.TokenType != JsonToken.Null)
    {           
        if (reader.TokenType == JsonToken.StartArray)
        {
            JToken token = JToken.Load(reader); 
            List<string> items = token.ToObject<List<string>>();  
            myCustomType = new MyCustomType(items);
        }
        else
        {
            JValue jValue = new JValue(reader.Value);
            switch (reader.TokenType)
            {
                case JsonToken.String:
                    myCustomType = new MyCustomType((string)jValue);
                    break;
                case JsonToken.Date:
                    myCustomType = new MyCustomType((DateTime)jValue);
                    break;
                case JsonToken.Boolean:
                    myCustomType = new MyCustomType((bool)jValue);
                    break;
                case JsonToken.Integer:
                    int i = (int)jValue;
                    myCustomType = new MyCustomType(i);
                    break;
                default:
                    Console.WriteLine("Default case");
                    Console.WriteLine(reader.TokenType.ToString());
                    break;
            }
        }
    }      
    return myCustomType;
}

Newtonsoft.json custom WriteJson not execute

答:自定义转换器重写

 public override bool CanWrite { get { return false; } }

Web

angular


How to get dom element in angular 2

答:

import {ElementRef} from '@angular/core';
@ViewChild('someVar') el:ElementRef;

ngAfterViewInit()
{
   this.el.nativeElement.focus();
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容