目的:接続文字列オフに基づいて、エンティティのコンテキストを作成します
使用EFは、APIからのPOSTリクエストからデータを入力します。 POST要求にはconnection string
をと同じ名前のconnection string
となるenum
にマップする「ID」が含まれます。 「基本」context
オブジェクトを作成し、オブジェクトを適切なテーブルに追加します。
注:
私はSqlCommand
を使用してこれを行うことができます知っているが、私の代わりにentity framework
を使用して、それで亀裂を撮りたかったが、私は壁にぶつかります。
私は長年、EFを使用しましたが、私はそれを得ることができるようグローバルとしてこのPOST
方法を作りたかったです。このAPIは、さまざまなWebサイトから多数のリクエストを受け付けますが、すべて同じモデルを使用します。各ウェブサイトのPOSTはの別のデータベースにあります(これがリクエストする方法です)。
私が予見する問題は、各「エンティティ」がどのテーブルに含まれているかを知ることです。したがって、1つのタイプがcontext.TABLE.Add(object)
の場合、EFはこの "Car"オブジェクトを "Car"テーブルに配置したいことを理解しています(明らかに)。
「グローバル」エンティティを使用してこれを行うことはできますか?
public class DbConnectionNames
{
public enum DbConnectionStringNames
{
SocHopeHcpEntities = 1, // "1" is passed into the POST to map
XXXXEntities = 2,
......
}
}
<add name="SocHopeHcpEntities" connectionString=".........." />
<add name="XXXXEntities" connectionString=".........." />
.....
var professional = new Professional
{
....
....
};
string connStringContext = Enum.GetName(typeof(DbConnectionNames.DbConnectionStringNames), model.FormId).ToString();
string connectionString = ConfigurationManager.ConnectionStrings[connStringContext].ConnectionString;
using (var context = new ObjectContext(connectionString))
{
context.Professionals.Add(professional); // obviously this doesn't work
context.SaveChanges();
}
EDIT:
私のEFは、POCOを使用していないが、すでにそもそもDBをオフに基づいています。同一の類似の表を保持するXX個の異なるデータベースが存在する可能性があります。
public partial class SocHopeHcpEntities : DbContext
{
public SocHopeHcpEntities()
: base("name=SocHopeHcpEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<AreasOfWork> AreasOfWorks { get; set; }
public virtual DbSet<Professional> Professionals { get; set; }
}
「[質問には「タイトルにタグを含める必要がありますか」](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-the-titles)を参照してください。コンセンサスは "いいえ、彼らはすべきではありません"です! –