.Net Core / Net ASP Core [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
おらの群馬さにはIISなんてねえもんでりなっくすさ使ってしぃしゃーぷさ動かすべえな
こんなの動くなんておったまげえな時代だわな
んだいくべえ >>389
そうだよ
基本的に名前を見比べて1行と1オブジェクトに変換してくれるだけ
変換ルールのカスタマイズも出来るけど保守性がよくないから避けたほうがいい >>391
レスありがとうございます!
既存のストアドプロシージャーを使って、
テストコードを試してみたいと思います。
結果をマッピングできるのはとても便利ですね。
ありがとうございます! >>390
列名が日本語で書かれているんですよ。
select ID,名称 from ほにゃらら
みたいな感じでデータを引っ張って来る必要があるので、
マッピングするC#クラスのプロパティーも、こういうのに合わせる必要があるわけなんです。
日本人なら分かり易いというメリットはあるんですが、
システム上の互換性でいつか面倒なことにならないかと心配しますね。 >>394
ありがとうございます。
なるほど、そうすれば英語表記のモデルクラスが使えるということですね。
日本語クラス名、プロパティー名で結構だというのなら、使う必要はないという理解でいいのかな?
ところでこれは、DBContextの、関連付けとちょっと似ていますね。
メソッドチェーンしながら、ラムダ式を与えて、エンティティーの定義を行っていました。 >>391さんのおっしゃる、
”変換ルールのカスタマイズも出来るけど保守性がよくないから避けたほうがいい”
というのは、この>>394さんのおっしゃっているカスタマイズのことなんだろうね。 sqlのasを使うと簡単だね
ただoracleだとasしても英訳した列名が30文字に収まらない場合がある
DBの物理的な制約を気にしたくないなら
DTOからドメインオブジェクトにマップする時に物理名を論理名に変換すればいいよ
DTOは日本語を含んでよい
ドメインオブジェクトは日本語を含まない
変換処理はC#で手作業で書く
DapperでDTOを取得して変換処理に流し込む >>397
>変換処理はC#で手作業で書く
>DapperでDTOを取得して変換処理に流し込む
これは、どういうことですか?
Dapperはドメインオブジェクト(モデルクラス)に行データを自動的に変換してくれるものだと理解してます。
そして、必要なら、日本語の列名を、クラスの英語名のプロパティ名に変換するために、>>394さんの方法を使うのですね。
Dapper自体と、DTOとの区別がわかりません。
いったん取得した行データの日本語名プロパティを含むクラス型を、完全英語名のクラス型に値をプロパティごとにC#でコピーするということでしょうか? DapperはSQLの結果セットをDTOにマッピングしてくれるだけ
DTOからドメインオブジェクトへのマッピングは別途用意しなければならない
DTOとドメインオブジェクトを同一視してマッピングを省くことは可能だけど
それをやるとドメインオブジェクトが歪な構造になるのでオススメしない >>399
>DTOとドメインオブジェクトを同一視 >DTOとドメインオブジェクトを同一視
自分はその同一視をしていたのかもしれない。これは、アプリの設計に深く関わる問題ですね。
ドメイン駆動アプリ?だかの参考書を読んでいたときのことを思い出しました。
でも知識を使う前に、すっかり忘れていました。
最初、こんなつもりでした。
例えばこんな感じで、モデルクラスを定義して、
自分の場合、データベースの日本語列名に合わせて、日本語のプロパティー名で定義して、
public class 人間
{
public int Id { get; set; }
public string 名前 { get; set; }
}
そして、
SQL Server → Dapper →「人間クラス」
(こうして、人間クラスに行データがマッピングされる。だから、「人間クラス」がDTOでいいのかな。)
で、
ControllerのActionメソッドとかから、この「人間クラス」のオブジェクトにアクセスして、
Viewなりに渡そうとしていました。
ああ、これでは同一視になりますよね。
つづく↓ >DTOからドメインオブジェクトへのマッピングは別途用意しなければならない
SQL Server→Dapper→「人間クラス(DTO)」→→(変換)→→「ドメインオブジェクト」
なるほど。>>397でおしゃっていたことが理解できたかも。
DTOまでは、日本語名のクラス名やプロパティーでもOkなわけですね。
しかし、ドメインオブジェクトという形に、変形してアプリに統一性を持たせるべきで、
そのときに(ついでに)、英語に統一すればいいというわけなのか。
もし、私の理解が間違っていなければ、目から鱗でした!
ありがとうございます。もう一度、設計のための参考書を開いてみたいと思います。
勉強したことを使わないうちに、どんどん忘れてしまう。。。。
しかし、こうして、
日本語名から英語名への統一でも、ドメインオブジェクトという考え方が役に立つんですねえ。
ありがとうございます。 >>402
DTOからドメインオブジェクトへの変換は一パターンとは限らない
だからDapperからDTOにマッピングする時点で、c#の規約に沿った形のクラス/プロパティ名にしておくと便利
じゃなきゃAutoMapperすら使えないし >>403
どこで、日本語名の列を、英語名のプロパティーに変換するかという問題なんですよね。
SQL Server→Dapper→「人間クラス(DTO)」→→(変換)→→「ドメインオブジェクト」
SQL Server→Dapper→→(変換)→→「人間クラス(DTO)」→ ※ →「ドメインオブジェクト」
ところで、AutoMapperは、上記の※の位置に来るという理解で正しいでしょうか。 DBには日本語つかうのに、プログラムに日本語使うのを嫌がるのが理解できん >>405
var p = new 人間();
var n = p.名前;
こんな感じなのは、普通ってことでしょうか? カスタムルールはメンテナーがカスタム手順わからなくて困るパターン
手動マッピングなら5分で書けるのにルール設定がわからず1時間ハマりっぱなしとかよくある >>409
>>404のように、
DTOとドメインオブジェクトとのあいだで、
手動変換するということですね ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ EF Coreはまだまだみたいだから、とりあえずDapperで使えればいいや Kestrelのhttp2対応ってどの辺までできたのかしら? kestrel(というかasp.net core)がまだPush対応されてなくて無事死亡 goを触ってからだとビルドとかパッケージ管理とかの遅さが気になって使えない warn: Microsoft.AspNetCore.Server.Kestrel[22]
Heartbeat too longer than "00:00:01" at "03/07/2018 10:00:00 +00:00"
こんな警告が出るんだけどどういう意味?
解決方法教えて >>421-422
色々と洗ってみたけどダメでした
再現性もなくログには不定期に出力されてるからKestrel側の問題なのかな
でもありがとう >>423
そっかあ。
個人的に気になるインシデントなので、
もし進展があって気が向いたら書き込んでくれると嬉しいです。 VS2017で、.net core 2.0 をつかっていたんだけど、
2.1 SDK を入れてみた。
でも、プロジェウト作成で、選べない。
どうすればいい? 自己レス
https://github.com/dotnet/core/issues/1131
There is no .NET Core 2.1.2. Thats the SDK version. I believe the 2.2 SDK is the one that currently supports .NET Core 2.1 targeting.
なんか、何のバージョンかわからなくなってきた。
sdkのバージョンと、
ランタイムのバージョンがあるのか。
ややこしい。
.net coreランタイムのバージョンが、2.1にならないと、vsで、2.1 のテンプレートが使えないってことかな?
新しいクラスの追加とか、高速化とか、期待していたのになあ。
sdkのバージョンが、2.1 になって何かメリットあるのか? 自己レス
https://jonhilton.net/2017/04/17/making-sense-of-the-different-versions-of-net-core-runtime-and-sdk/
The latest SDK (at the time of writing) is 2.1.4.
This is the SDK that goes alongside .NET Core 2.0.5 (you don’t need to download the runtime separately, you can just grab this SDK and it will install everything).
勘違いしていたなあ。
ランタイムは2.0のまま変わらない。
だから、vsのテンプレートで、2.1が選べないわけか。
考えあっている? >>432
ちがう!
同じ疑問を持つ人のために情報共有 >>431
SDKは、global.jsonで指定しない限りインストールされている最新のものが使われる。
だからそもそも何がしたいのかい? >>434
vs2017と、去年八月に登場した.net core 2.0sdkを組み合わせたら、.net core2.0アプリを作成できるようになった。.net core2.0アプリの テンプレートを選べるようになった。
同じように、.net core sdk2.1.4のインストールで、 .net core2.1のアプリが作成できるようになると思ったが、どうやら違うらしいとわかったわけです。 sdkを刷新して、2.1.4にしたら、
何か新しいクラスライブラリの恩恵を受けられるのですか?ランタイムは、2.0.4のままで? vs2017と、.net core sdkとの関係がわかりません。
sdkとランタイムは違うのですよね。
sdkって、クラスライブラリを含んでいるのかな? .NET Core2.1はプレビュー版しか出てないよ
ASP.NET Core2.1を使いたいなら、Visual Studio自体もプレビュー版じゃないとだめ >>439
ありがとうございます。ちょっとわかってきました。
SDK 2.1.4をインストールしたのに、VS2017で、.net core 2.0のテンプレしか選択できなかったのは、当然だったんですね。
>>438
読みます。
https://docs.microsoft.com/en-us/dotnet/core/versions/
There are lots of moving parts that version independently in .NET Core.
However, starting with .NET Core 2.0, there is an easy to understand top-level version number
that everybody understands to be the version of ".NET Core" as a whole.
本当は、.net core は複数のパーツから成り立っていてそれぞれバージョンが設定されるのに、
それが登場したときには、まとめてバージョン2.0という設定をやったので、
皆に誤解を与えたというわけだな。 でも、バージョンの付け方が、今度からがらっと変わるらしいね。
The version scheme is changing in future releases.
You can see the current proposal at the dotnet/designs repository.
https://github.com/dotnet/designs/pull/29
ガーデニングしてそうな女性がバリバリに働いているんだな。> MS https://github.com/dotnet/core/issues/1131
このページも参考になった。
"dotnet --version" returns 2.1.2 that is the SDK version not runtime version?
That has to be the SDK version because there is no 2.1.2 runtime version in existence.
I can see how this is all very confusing. 総合テストをしようとnew TestServerしてserver.Host.Services.GetService<xxx>()しようとすると
System.InvalidOperationException : No service for type 'xxx' has been registered. とエラーが出て困ってます
デバックでは問題なく起動していてnew TestServerに使うWebHostBuilderは同じものを使用してUseContentRoot()を変更しています
原因が分からないのでどなたか解決策を教えてください public class Startup
{
public Startup(IConfiguration configuration, IHostingEnvironment environment)
システムによって、自動的に、IHostingEnvironment environment は取得できるけど、
普通のユーザーメソッド内で、IHostingEnvironment environment を取得するか、
生成することってできるでしょうか。
IHostingEnvironment environment の内容を知りたいんですが、
Startupに手を加えたくないわけです。 >>445
インターフェイスなので実体化できません。
このインターフェイスを実装するクラスってあるんでしょうか。
そして、任意のタイミングでそれを実体化したときに、
適切に初期化されるんでしょうか。 >>446
実装クラスはFramework側で勝手にInjectしてくれてるから、どこでも普通にDIコンテナからとれるよ? >>447
c#の経験は少しあるのですが、
.net coreなどの最新の技術には疎いです。
どのようにして、インスタンスの参照を得られるのか、
コードで示して貰えると幸いです。
Programクラスに、静的メンバを設けて、それを経由で、アクセスしょうかと考えていたところです。 >>448
ASP.NET Core DI
でググってひと通り基本的な知識を入れてから、もし分からなければまたおいで class MyClass : IMyClass {
private IHost... h;
public MyClass(IHost... h) }
this.h = h;
}
public void MyMethod() {
h.xxx;
} linuxのdotnet-sdk-2.1.105でまともに使えるSQLiteのnugetライブラリってどれよ
Microsoft.EntityFrameworkCore.SqliteはFileIOExceptionで起動しないし
Microsoft.Data.Sqliteはメモリリークしまくるし >>457
FileIOExceptionのスタックトレース >>458
457です、レスありがと
MS.EFCore.Sqliteを使った時のスタックトレースはこれ
Windowsの2.1.104だと問題なく動く
Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly
'System.Linq.Expressions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
中止 (コアダンプ) dotnet coreってPInvokeのマーシャリングルールどうなってんの
処理系のエンディアンとかちゃんと気にしないとあかん? 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
A2A58 ASP Core MVCでdll作ってサーバにアップした後、
特定のコントローラーの処理だけ変えたい場合はまた同じ手順を繰り返し?
初回アクセスで高負荷になるしPHPみたいになんとかならないの? ならないんだ
webって頻繁に更新があるものだしその度に毎回これじゃ使えないね
ASPに未来あるの? dllを更新してdotnetをrestart
初回アクセスでCPU100%
その後各ページの初回アクセスにも20-30%の負荷が掛かってる
これで使えると思う方が間抜けでは?
ちな環境はLinux Kestrel stackoverflowはもうcore対応したん? ゴミサーバーでもPHPなら問題なく動くけど?
ゴミサーバーじゃなくてもちょっとした更新の度に負荷が掛かってるのは事実であってはっきり言って使えない >>474
ゴミじゃなかったらそんなの気にならないレベル >>474
そんなにパフォーマンス気にしなきゃいけない状況でなぜPHPなの?これ見てどう思う?
https://www.techempower.com/benchmarks/#section=test&runid=f62c00e2-070f-4636-90a3-1ba2687271a4&hw=ph&test=plaintext core3でデスクトップ対応するってんで久しぶりにformsで遊んだんだが
VSのUIデザイナーがすげー使いにくいかった
マークアップって便利なものだったんだな >>479
今後仕事があるとしたらFormsの.Net Core移植かなーと思った >>480
まあ今年後半にpreview版出るらしいから期待しとくわ サポートはwindowsだけみたいね。
それじゃ.netと変わらんよ… でもサードパーティのリッチコンポーネントがCore対応しないと移行すすまんやろな
有料ライブラリもNuGetで配布するようになんのか? >>485
.NET Standardじゃなくて? もうNuGetには出てるし、Releasenoteも見れる ■ このスレッドは過去ログ倉庫に格納されています