長年のリスナー、初めての発信者。
私はおそらくこれに対して間違ったアプローチを取っているので、どんな助けも素晴らしいでしょう。
私は C#、MVC 4、Code First、Entity Framework 4.3、および Razor を使用しています。
EFデータクラスといくつかのメソッドを別のクラスプロジェクトに分割して、他の複数のプロジェクトから一般的に参照できるようにしようとしています。この問題をできるだけ強調するために、この単純化された例を作成しました。
だから私が持っているクラスプロジェクトでは:
public MyGeneric(string name)
{
ID = Guid.NewGuid();
Name = name;
}
public Guid ID { get; set; }
public string Name { get; set; }
public void AddThis(MyGeneric obj)
{
using (var db = Activator.CreateInstance<myDbContext>())
{
var myOthers = from mo in db.MyOther
where mo.OtherID == obj.ID
select mo;
myOthers.ForEach(mo => db.MyOther.Add(mo));
db.SaveChanges();
}
}
そして、次のようなメイン プロジェクトでこれを参照できます。
public class SampleInherit : MyGeneric
{
public SampleInherit(string newName, string secName)
: base(newName)
{
SecName = secName;
}
public string SecName { get; set; }
public void DoSomething(SampleInherit obj)
{
base.AddThis(obj);
// do other stuff
}
}
私がやろうとしているのは、いくつかのクラスとそのメソッドを別のサイド プロジェクトにジェネリック化することです (それは単語ですか?)。このサイド プロジェクトは、(必要な順序で) 次の基本クラスを提供します。
- EF DbContext を使用してデータベースを作成/アクセスし、
- より多くのプロパティを追加できるようにする
- 基礎となるデータに影響を与える方法/手順を提供し、
- メインプロジェクトに合わせてより適切に名前を変更してください。
基本クラスをメイン プロジェクトのクラスに継承するだけで、基本クラス参照 myDbContext と LINQ ステートメント内のエンティティ オブジェクト参照を除いてすべて機能します。
DataContext を遅延バインドできますか、それともここで自分自身を隅に描きましたか?
あなたが与えることができるすべての助けに乾杯.