X



.Net Core / Net ASP Core [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2016/06/30(木) 03:45:41.80ID:EQd6Pds5
おらの群馬さにはIISなんてねえもんでりなっくすさ使ってしぃしゃーぷさ動かすべえな
こんなの動くなんておったまげえな時代だわな

んだいくべえ
0340デフォルトの名無しさん
垢版 |
2017/12/10(日) 18:23:41.80ID:0U7F95ib
なんのかの言うだけでネタはねーのかよショボチンやなー
結局ご本家ソース読んでたら出来ちまったわ

しっかし、モデルを太らず実装を拒絶するMVCerってのは正直生まれて初めて見たな...ちゃんとテスト書いてのかよw
太り過ぎたら分割すりゃいいし、分割するにもController分割よかずっと楽だろうに
Identityのソースでもやってる実装やし、別にフツーのことやぞ?
0341デフォルトの名無しさん
垢版 |
2017/12/10(日) 18:41:31.13ID:1RSLLPBx
>>340
君のなにが悪かったかっていうとモデルファットと言ってしまったことだよ

そもそもモデルファットじゃなくファットモデルというのは見逃すとしても
ファットモデルってのはファットコントローラーと同じアンチパターンのこと
それを当たり前の王道みたいな風に言ったからおかしなことになった

コントローラーから処理を抽出してモデル(サービス)に移動するのは当たり前の王道
ファットモデルはその王道をよく理解せずにコントローラーに無ければいいんだろ?と考えなしにモデルを拡張して破滅するアンチパターンのことを言う
0342デフォルトの名無しさん
垢版 |
2018/01/20(土) 12:58:14.78ID:JFYWdVwP
.net core 2 でSQLサーバとを連携させて、
スキャフォールディングなどを使ってみたいんですが、
対応しているSQLサーバのバージョンの制限などあるでしょうか。
今、たしかexpressの2010版が動いていると思います。
0344デフォルトの名無しさん
垢版 |
2018/01/20(土) 22:30:41.03ID:JFYWdVwP
>>343
レスいただきありがとうございます!
そうです。EFのことです。

ところで、EFはストアドプロシジャのモデルバインドに対応していないのは残念。
0346デフォルトの名無しさん
垢版 |
2018/01/21(日) 10:37:20.74ID:2KGk002L
>>345
そういうのもあるんですね。
自分は次の方法です。

DBContextの、FromSqlというメソッドで、
パラメーター付のストアドプロシジャ(SELECT文)も呼び出せるようです。

INSERT UPDATE DELETEは、
EXecuteSqlCommandAsync というメソッドを代わりに使えるようです。

Microsoft.EntityFrameworkCore.Relational パッケージを、導入している必要があるそうです。


どっちのパッケージがいいんでしょうか。
0351デフォルトの名無しさん
垢版 |
2018/01/24(水) 11:12:26.60ID:XjzEOcrl
BootStrap 4が登場したらしいね
0354デフォルトの名無しさん
垢版 |
2018/01/28(日) 00:21:12.53ID:HyAWtlpX
Javaのretrofitみたいな感じでタイプセーフなrest api clientをビルドするためのdot net coreライブラリって無いの?
0357デフォルトの名無しさん
垢版 |
2018/02/02(金) 18:51:27.51ID:7qD/+KXW
モデルオブジェクトの定義で、

[Table("任意の日本語テーブル名")]属性
[Column("日本語の列名")]属性

は使えるでしょうか。

asp.netでは、説明がありますが、
core2ではどうなのかなと思って。
0359デフォルトの名無しさん
垢版 |
2018/02/02(金) 19:53:34.57ID:mnzsFfcn
>>358
わー、さっそくレス頂きありがとうございます
そうです。
EntityFramework Core2.0 のことです。

パッケージ導入して、環境を準備して、
やってみたいと思います。

EntityFramework Core2.0では、規約がものをいうので、日本語のテーブル名、列名を使っているデータベースでも大丈夫なのか不安なのでした。

ハローワールドは成功したので、dbcontext、エンティティ、そしてテストコードを書くところです。

EntityFramework Core2.0って、コードファーストや、データベースファーストを推してくるんですが、そういう自動生成機能って、使わないで、自分で両方の定義をしてもいいのですよね。

皆さんはどういう風にしているのだろうか。
0362デフォルトの名無しさん
垢版 |
2018/02/04(日) 08:29:27.62ID:QYMD/NQL
>>360
日本語のテーブル名とか、列名つかってなかったの?
英語の複数形をテーブル名にしてたとか、ルールを意識して構築してたのかな。
0365デフォルトの名無しさん
垢版 |
2018/02/04(日) 23:06:57.46ID:QYMD/NQL
>>363
sql server 7.0の頃から構築したテーブルで、
日本語のテーブル名と列名が使われているんだよ。
そのままスキャフォールディングするのも心配。
日本語のクラス名とかプロパティーなんて見たくないし。
0366デフォルトの名無しさん
垢版 |
2018/02/04(日) 23:07:57.43ID:QYMD/NQL
>>364
いや、規約から外れていると何か不具合が発生しそうで。
0369デフォルトの名無しさん
垢版 |
2018/02/05(月) 07:55:09.71ID:yOavcQZS
>>368
水色の.net coreの参考書しか読んだことない。
あと、薄紫色のASP.NET MVCの書籍とか。
ドキュメントなんかあるんか?
0370デフォルトの名無しさん
垢版 |
2018/02/05(月) 07:56:15.21ID:yOavcQZS
>>367
View?
htmlを描画するやつのことではないと思うけど。
0371デフォルトの名無しさん
垢版 |
2018/02/05(月) 08:53:07.85ID:Nl1w3IZD
sqlのviewだと思うが、書き込みは普通にテーブル使うしか無い
どうしても避けたいのならWebAPIでも使うのが最善かも
DBがインストールされたサーバー内だけなら日本語テーブル名問題は起こらないだろうから
その後を全部英文字にすればトラブルフリーに出来るかもしれん
0378デフォルトの名無しさん
垢版 |
2018/02/06(火) 22:06:09.44ID:Sf4AdKgB
>>377
アマゾンでは紙本だったよ
0380デフォルトの名無しさん
垢版 |
2018/02/07(水) 03:10:06.91ID:PMKzxqpw
ASP.NET MVC の 知識ってほとんどそのまま、.net core MVC で通用すると考えていいのかな?
0382デフォルトの名無しさん
垢版 |
2018/02/07(水) 13:16:27.18ID:Dhak1qt/
>>379
大丈夫
0383デフォルトの名無しさん
垢版 |
2018/02/10(土) 00:32:08.18ID:Iv+szGNR
スキャホールディングしなくても、それが出力するようなコードを、
モデルと、DbContextに自分で全部書き起こせば、
データベーステーブルでテーブルの結合したやつでも得られるんだろうか。

データベースでリレーションの設定をしていないので、スキャホールディングでテーブル結合反映されないため、
自分でコードを記述しようと思っているんです。
データベース側は既存のプログラムとの連携が壊れたら困るのでいじりたくありません。。
0384デフォルトの名無しさん
垢版 |
2018/02/10(土) 06:53:12.80ID:KnoefXX3
業務系は複雑怪奇なレガシーDBの呪縛があるからEFとの相性が最悪
SQLを手で書いてDapperでマップするのが正解だよ
0386デフォルトの名無しさん
垢版 |
2018/02/10(土) 11:53:53.43ID:Iv+szGNR
>>385
壊してもいいデータベースで開発してから、
それを本番のデータベースで運用する予定

>>384
Dapperについて調べてみます。
ストアドプロシジャとパラメーターがつかえたらいいんだけどなあ
0388デフォルトの名無しさん
垢版 |
2018/02/10(土) 17:39:31.77ID:Iv+szGNR
>>387
ありがとうございます
0389デフォルトの名無しさん
垢版 |
2018/02/11(日) 15:30:58.53ID:NLXiui3Z
Dapperでは、SQLやストアドプロシジャの結果行に対応したモデルクラスに、
マッピングできるのだとわかってきました。

自分のところのストアドプロシジャでは、テーブルにはない新しい列が登場したり、列の名称が付替られたりするので、
ストアドプロシジャの結果行に対応した専用のクラスをいちいち作成しようと思いました。

ストアドプロシジャでは最終的に、SELECT文で出力したい列が列挙されています。
対応するクラスのプロパティー名(日本語)と列名(日本語)を一致させておけば、
列挙の順番は関係ないでしょうか。
0391デフォルトの名無しさん
垢版 |
2018/02/11(日) 15:53:15.39ID:QgiY6BS8
>>389
そうだよ
基本的に名前を見比べて1行と1オブジェクトに変換してくれるだけ
変換ルールのカスタマイズも出来るけど保守性がよくないから避けたほうがいい
0392デフォルトの名無しさん
垢版 |
2018/02/11(日) 21:30:20.43ID:NLXiui3Z
>>391
レスありがとうございます!

既存のストアドプロシージャーを使って、
テストコードを試してみたいと思います。
結果をマッピングできるのはとても便利ですね。
ありがとうございます!
0393デフォルトの名無しさん
垢版 |
2018/02/11(日) 23:27:37.20ID:NLXiui3Z
>>390
列名が日本語で書かれているんですよ。

select ID,名称 from ほにゃらら

みたいな感じでデータを引っ張って来る必要があるので、
マッピングするC#クラスのプロパティーも、こういうのに合わせる必要があるわけなんです。

日本人なら分かり易いというメリットはあるんですが、
システム上の互換性でいつか面倒なことにならないかと心配しますね。
0395デフォルトの名無しさん
垢版 |
2018/02/12(月) 08:53:13.20ID:BsV1rQ8t
>>394
ありがとうございます。

なるほど、そうすれば英語表記のモデルクラスが使えるということですね。
日本語クラス名、プロパティー名で結構だというのなら、使う必要はないという理解でいいのかな?

ところでこれは、DBContextの、関連付けとちょっと似ていますね。
メソッドチェーンしながら、ラムダ式を与えて、エンティティーの定義を行っていました。
0396デフォルトの名無しさん
垢版 |
2018/02/12(月) 08:55:15.61ID:BsV1rQ8t
>>391さんのおっしゃる、
”変換ルールのカスタマイズも出来るけど保守性がよくないから避けたほうがいい”
というのは、この>>394さんのおっしゃっているカスタマイズのことなんだろうね。
0397デフォルトの名無しさん
垢版 |
2018/02/12(月) 09:05:51.69ID:Bk9VmC4X
sqlのasを使うと簡単だね
ただoracleだとasしても英訳した列名が30文字に収まらない場合がある

DBの物理的な制約を気にしたくないなら
DTOからドメインオブジェクトにマップする時に物理名を論理名に変換すればいいよ
DTOは日本語を含んでよい
ドメインオブジェクトは日本語を含まない
変換処理はC#で手作業で書く
DapperでDTOを取得して変換処理に流し込む
0398デフォルトの名無しさん
垢版 |
2018/02/12(月) 10:06:28.69ID:BsV1rQ8t
>>397
>変換処理はC#で手作業で書く
>DapperでDTOを取得して変換処理に流し込む

これは、どういうことですか?
Dapperはドメインオブジェクト(モデルクラス)に行データを自動的に変換してくれるものだと理解してます。

そして、必要なら、日本語の列名を、クラスの英語名のプロパティ名に変換するために、>>394さんの方法を使うのですね。

Dapper自体と、DTOとの区別がわかりません。
いったん取得した行データの日本語名プロパティを含むクラス型を、完全英語名のクラス型に値をプロパティごとにC#でコピーするということでしょうか?
0399デフォルトの名無しさん
垢版 |
2018/02/12(月) 11:47:11.65ID:Bk9VmC4X
DapperはSQLの結果セットをDTOにマッピングしてくれるだけ
DTOからドメインオブジェクトへのマッピングは別途用意しなければならない
DTOとドメインオブジェクトを同一視してマッピングを省くことは可能だけど
それをやるとドメインオブジェクトが歪な構造になるのでオススメしない
0400デフォルトの名無しさん
垢版 |
2018/02/12(月) 11:52:36.00ID:BsV1rQ8t
>>399
>DTOとドメインオブジェクトを同一視
0401デフォルトの名無しさん
垢版 |
2018/02/12(月) 12:16:20.63ID:BsV1rQ8t
>DTOとドメインオブジェクトを同一視

自分はその同一視をしていたのかもしれない。これは、アプリの設計に深く関わる問題ですね。
ドメイン駆動アプリ?だかの参考書を読んでいたときのことを思い出しました。
でも知識を使う前に、すっかり忘れていました。


最初、こんなつもりでした。
例えばこんな感じで、モデルクラスを定義して、
自分の場合、データベースの日本語列名に合わせて、日本語のプロパティー名で定義して、

public class 人間
{
public int Id { get; set; }
public string 名前 { get; set; }
}

そして、
SQL Server → Dapper →「人間クラス」
(こうして、人間クラスに行データがマッピングされる。だから、「人間クラス」がDTOでいいのかな。)

で、
ControllerのActionメソッドとかから、この「人間クラス」のオブジェクトにアクセスして、
Viewなりに渡そうとしていました。

ああ、これでは同一視になりますよね。

つづく↓
0402デフォルトの名無しさん
垢版 |
2018/02/12(月) 12:17:48.80ID:BsV1rQ8t
>DTOからドメインオブジェクトへのマッピングは別途用意しなければならない

SQL Server→Dapper→「人間クラス(DTO)」→→(変換)→→「ドメインオブジェクト」

なるほど。>>397でおしゃっていたことが理解できたかも。

DTOまでは、日本語名のクラス名やプロパティーでもOkなわけですね。
しかし、ドメインオブジェクトという形に、変形してアプリに統一性を持たせるべきで、
そのときに(ついでに)、英語に統一すればいいというわけなのか。

もし、私の理解が間違っていなければ、目から鱗でした!
ありがとうございます。もう一度、設計のための参考書を開いてみたいと思います。
勉強したことを使わないうちに、どんどん忘れてしまう。。。。

しかし、こうして、
日本語名から英語名への統一でも、ドメインオブジェクトという考え方が役に立つんですねえ。

ありがとうございます。
0403デフォルトの名無しさん
垢版 |
2018/02/12(月) 12:53:34.77ID:GfEZnF0r
>>402
DTOからドメインオブジェクトへの変換は一パターンとは限らない
だからDapperからDTOにマッピングする時点で、c#の規約に沿った形のクラス/プロパティ名にしておくと便利
じゃなきゃAutoMapperすら使えないし
0404デフォルトの名無しさん
垢版 |
2018/02/13(火) 13:00:12.61ID:iaxO17aK
>>403
どこで、日本語名の列を、英語名のプロパティーに変換するかという問題なんですよね。


SQL Server→Dapper→「人間クラス(DTO)」→→(変換)→→「ドメインオブジェクト」

SQL Server→Dapper→→(変換)→→「人間クラス(DTO)」→ ※ →「ドメインオブジェクト」


ところで、AutoMapperは、上記の※の位置に来るという理解で正しいでしょうか。
0405デフォルトの名無しさん
垢版 |
2018/02/13(火) 19:41:40.28ID:3CyK4CdI
DBには日本語つかうのに、プログラムに日本語使うのを嫌がるのが理解できん
0407デフォルトの名無しさん
垢版 |
2018/02/13(火) 22:00:43.94ID:JC9fn+CH
>>405
var p = new 人間();
var n = p.名前;

こんな感じなのは、普通ってことでしょうか?
0409デフォルトの名無しさん
垢版 |
2018/02/13(火) 22:25:03.46ID:YVR14H+q
カスタムルールはメンテナーがカスタム手順わからなくて困るパターン
手動マッピングなら5分で書けるのにルール設定がわからず1時間ハマりっぱなしとかよくある
0410デフォルトの名無しさん
垢版 |
2018/02/14(水) 00:25:23.19ID:ZUhxPQA+
>>409

>>404のように、
DTOとドメインオブジェクトとのあいだで、
手動変換するということですね
0411デフォルトの名無しさん
垢版 |
2018/02/16(金) 06:17:18.75ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0412デフォルトの名無しさん
垢版 |
2018/02/17(土) 13:05:06.90ID:suX8xbj+
Oracle has updated its .NET Core statement of direction. http://www.oracle.com/technetwork/topics/dotnet/tech-info/odpnet-dotnet-ef-core-sod-4395108.pdf

tl;dr
https://t.co/Zn0Rz2SBM2 Core production in CY Q3 2018. EF Core beta shortly after targeting same quarter.
https://twitter.com/OracleDOTNET/status/964631730220023808
https://twitter.com/OracleDOTNET/status/964632656725008384 👀
Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01)
0418デフォルトの名無しさん
垢版 |
2018/02/28(水) 13:23:08.67ID:l/zLj3SM
goを触ってからだとビルドとかパッケージ管理とかの遅さが気になって使えない
0420デフォルトの名無しさん
垢版 |
2018/03/07(水) 10:21:49.84ID:CXvHai5s
warn: Microsoft.AspNetCore.Server.Kestrel[22]
Heartbeat too longer than "00:00:01" at "03/07/2018 10:00:00 +00:00"

こんな警告が出るんだけどどういう意味?
解決方法教えて
0423デフォルトの名無しさん
垢版 |
2018/03/07(水) 20:39:20.58ID:CXvHai5s
>>421-422
色々と洗ってみたけどダメでした
再現性もなくログには不定期に出力されてるからKestrel側の問題なのかな
でもありがとう
0424デフォルトの名無しさん
垢版 |
2018/03/08(木) 08:01:24.98ID:d+RhIWam
>>423
そっかあ。
個人的に気になるインシデントなので、
もし進展があって気が向いたら書き込んでくれると嬉しいです。
0425デフォルトの名無しさん
垢版 |
2018/03/14(水) 05:54:49.37ID:lJWHeXYc
VS2017で、.net core 2.0 をつかっていたんだけど、
2.1 SDK を入れてみた。
でも、プロジェウト作成で、選べない。
どうすればいい?
0428デフォルトの名無しさん
垢版 |
2018/03/14(水) 07:10:01.79ID:nU+HZj40
>>426
無理、外にいるから
0429デフォルトの名無しさん
垢版 |
2018/03/14(水) 07:30:08.10ID:nU+HZj40
自己レス


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 になって何かメリットあるのか?
0431デフォルトの名無しさん
垢版 |
2018/03/14(水) 07:53:10.33ID:nU+HZj40
自己レス



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が選べないわけか。

考えあっている?
0433デフォルトの名無しさん
垢版 |
2018/03/14(水) 08:01:01.88ID:nU+HZj40
>>432
ちがう!
同じ疑問を持つ人のために情報共有
0434デフォルトの名無しさん
垢版 |
2018/03/14(水) 08:05:29.32ID:qzzm58fG
>>431
SDKは、global.jsonで指定しない限りインストールされている最新のものが使われる。
だからそもそも何がしたいのかい?
0435デフォルトの名無しさん
垢版 |
2018/03/14(水) 09:32:41.43ID:nU+HZj40
>>434
vs2017と、去年八月に登場した.net core 2.0sdkを組み合わせたら、.net core2.0アプリを作成できるようになった。.net core2.0アプリの テンプレートを選べるようになった。
同じように、.net core sdk2.1.4のインストールで、 .net core2.1のアプリが作成できるようになると思ったが、どうやら違うらしいとわかったわけです。
0436デフォルトの名無しさん
垢版 |
2018/03/14(水) 09:36:28.07ID:nU+HZj40
sdkを刷新して、2.1.4にしたら、
何か新しいクラスライブラリの恩恵を受けられるのですか?ランタイムは、2.0.4のままで?
0437デフォルトの名無しさん
垢版 |
2018/03/14(水) 09:38:58.63ID:nU+HZj40
vs2017と、.net core sdkとの関係がわかりません。
sdkとランタイムは違うのですよね。
sdkって、クラスライブラリを含んでいるのかな?
0439デフォルトの名無しさん
垢版 |
2018/03/14(水) 11:38:32.51ID:qzzm58fG
.NET Core2.1はプレビュー版しか出てないよ
ASP.NET Core2.1を使いたいなら、Visual Studio自体もプレビュー版じゃないとだめ
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況