X



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

んだいくべえ
0326デフォルトの名無しさん
垢版 |
2017/12/10(日) 02:22:16.47ID:E18YbOxi
>>323
asp.net core のスキャッフォルド機能だよ
entity入れたらコントローラとビューを作るやつ
一緒にviewModelとかも作りたいし、efのマイグレーションも一緒にやりたいんだが
そういうニーズは無いのかねえ?
0328デフォルトの名無しさん
垢版 |
2017/12/10(日) 08:31:23.29ID:E18YbOxi
>>327
んー、今んとこ考えてたのは、
1)既存テンプレのカスタマイズだけじゃなくて、ControllerやView以外のファイルを吐き出す。今のところ、Entityに対応するViewModelと、モデルファット実装したいからソレ用のモデルクラス。
2)efのadd-migration, update-database を実行するオプションの追加。
3)DIコンテナへの登録、dbContextへのDbSet追加やらの、既存ファイルへの追記。
の3つ。

dotnet aspnet-codegeneratorで自作パッケージ上の実装を読ませるサンプルが見つかったんだが、サンプルは引数をトリガにして自分の実装へ誘導するまでで終わってて、ファイルの生成までは書いてない。
で、御本家githubのaspnet/Scaffoldingを読んでて面倒くせえわ誰かもうやってんだろ、となった。
0331デフォルトの名無しさん
垢版 |
2017/12/10(日) 10:47:26.57ID:E18YbOxi
MVCモデルで書いててモデルファットが通じないってマジかよ
コンローラにロジック盛り盛りなの?
0332デフォルトの名無しさん
垢版 |
2017/12/10(日) 11:14:17.45ID:kvXnKVDw
システム運用開始後に運用者側でモデルを変更したいって話?

それは俺も今考えててデータはJSONで保存してビュー側でJSONのないようにて
動的にテンプレート変更するしかないのかな状態。
0333デフォルトの名無しさん
垢版 |
2017/12/10(日) 11:16:34.18ID:1RSLLPBx
fat modelを実装したい←意味わからん
設計ミスってfat modelになってしまった←意味わかる

失敗した結果をfat modelという
それをなんで実装したいの?
0334デフォルトの名無しさん
垢版 |
2017/12/10(日) 15:56:56.62ID:0U7F95ib
ああ、なんかスマン、煽り気味に書いたのに割とマジな回答も貰っちまって微妙な気分。

LL言語系FWのMVCモデルでユニットテストを書きやすくするため、単純なInputに対して単純なOutputを返す"モデル"に実装を寄せる考え方をモデルファットって言うのね。
Rails系が流行ったあたりから今も変わらない、所謂Web系の皆さんの基本アプローチになってて。

ASP.Net MVCを触ってて、MS世界というかASPの思想上には無い概念だ、というのは分かった。
ただ俺の都合として、社内でRails系FWに慣れ親しんだ連中をこっちに誘導したいわけですわ。
よって昔ながらのFWにある機能は一通り用意した、ASP版FWを当てがってやるつもりでいる。

その一環でスキャッフォルド機能も実装中だった、というわけです。
0335デフォルトの名無しさん
垢版 |
2017/12/10(日) 16:21:23.96ID:1RSLLPBx
モデルファットじゃなくファットモデルな
ファットコントローラーを嫌ってモデルに処理を移動したのはいいが
単にモデルを巨大化させただけでファットコントローラーとやってること同じじゃんっていうやつね
ファットモデルになってしまったという事はあるけど狙ってファットモデルにするって事はありえないよ
なのでそれをサポートするフレームワークも当然ありえない
0338デフォルトの名無しさん
垢版 |
2017/12/10(日) 17:40:41.52ID:AsjcCxkl
スキャフォールドはリバースエンジニアリングでもリファクタリングでもないだろう
スキャをどうこうじゃなくて、リファクタリング系の充実を望むって話じゃないか
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 を入れてみた。
でも、プロジェウト作成で、選べない。
どうすればいい?
■ このスレッドは過去ログ倉庫に格納されています

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