雑多なメモ

はじめに

未整理のメモです。そのうちまとめたり、削除したりするかもしれません。

ASP.NET MVC + Entity FrameworkでOracleを使う方法

  1. Oracle Data Access Componentsをインストールする
  2. [参照の追加][拡張][Orcle.DataAccess]を選択する

ASP.NET MVC + Entity Frameworkで一対多の関係を定義する方法

データベースで外部キーがないときに、自分で関係を定義する方法です。

  1. エンティティデザイナーでアソシエーションを追加する
  2. アソシエーションのプロパティの参照に関する制約を設定する
  3. 設定では、プリンシパルに「一」のエンティティ、依存に「多」のエンティティを指定する

ASP.NET MVCアプリケーションのデプロイ方法

ソリューションエクスプローラーのプロジェクトのコンテキストメニューから[発行]を選択して、あとはウィザードに従います。

ASP.NET MVCでGETパラメータを受け取る方法

普通はアクションメソッドの引数で受け取りますが、あえてリクエストオブジェクトから受け取ることもできます。

Request.QueryString.Get("パラメータ名");

ASP.NET MVCでPOSTパラメータを受け取る方法

普通はアクションメソッドの引数で受け取りますが、あえてリクエストオブジェクトから受け取ることもできます。

Request.Form.Get("パラメータ名");

ASP.NET MVCでカスタムパラメータを設定する方法

Web.configに値を設定します。

<configuration>
  <appSettings>
    <add key="CustomKey" value="CustomValue" />
  </appSettings>
</configuration>

値の取得はConfigurationManager.AppSettingsを使います。

System.Configuration.ConfigurationManager.AppSettings["CustomKey"]

Entity FrameworkでOracleの順序の値を取得する方法

Entity Frameworkの機能ではOracleの順序(SEQUENCE)にはアクセスできないので直接SQLを実行します。SQLの実行はDbContext.DatabaseのSqlQueryを使います。

var sequence = db.Database.SqlQuery<int>("SELECT シーケンス.NEXTVAL FROM DUAL").First();

Entity Frameworkで条件を一つずつ追加する方法

IQueryableで戻り値を受けると条件を一つずつ追加することができます。

IQueryable<entity> data = db.entity;
data = data.Where(t => t.no >= 100);
data = data.Where(t => t.title == "無題");
data = data.OrderBy(t => t.no);

.NETで文字列を日時に変更する方法

DateTime.Parseメソッドを使います。

var targetDate = DateTime.Parse("2013-12-31 01:23:45");

.NETでTransactionScopeを使うための準備

[参照の追加][フレームワーク][System.Transactions]を選択します。

.NETでCSVファイルを読み込む方法

Microsoft.VisualBasic.FileIO.TextFieldParserを使うとデータ中にカンマを含むCSVファイルも読み込むことができます。

C#でこれを使うときには、[参照の追加][フレームワーク][Microsoft.VisualBasic]を選択しておきます。

using (var reader = new TextFieldParser("CSVファイル名"))
{
    reader.TextFieldType = FieldType.Delimited;
    reader.SetDelimiters(",");

    while (!reader.EndOfData)
    {
        var items = reader.ReadFields();
        foreach (var item in items)
        {
            Console.WriteLine(item);
        }
    }
}

.NETでCSV用データを作成する方法

CSVでデータを作成するときに、単純にカンマで連結するだけだとデータ中にカンマがある場合にデータを正しく作成できないので、少しデータを加工します。

private String ToCsvColumn(String value)
{
    if (String.IsNullOrEmpty(value))
    {
        return "";
    }
    if (! System.Text.RegularExpressions.Regex.IsMatch(value, "[\",]"))
    {
        // カンマやダブルクオートがない場合はそのまま
        return value;
    }
    value = value.Replace("\"", "\"\""); // "を""にする
    value = String.Format("\"{0}\"", value); // 全体を"で囲む
    return value;
}