私はasp.netコアを使用しています。コントローラでモデルを使用する基本的な方法は次のとおりです。データクラスはいつ必要ですか?
public class BookController : Controller
{
private readonly ApplicationDbContext _context { get; set; }
public BookController(ApplicationDbContext context)
{
_context = context;
}
public IActionResult Create(Book model)
{
// adding new model
}
public IActionResult Edit(Book model)
{
// modifying the model
}
public IActionResult Delete(Book model)
{
// removing the model
}
}
私の質問:コントローラ内にコードを実装する必要がありますか?それを別のクラスに実装しなければならないのですか?
このような何か:
public interface IBook
{
int Add(Book book);
int Update(Book book);
int Remove(Book book);
}
public class BookData : IBook
{
private readonly ApplicationDbContext _context { get; set; }
BookData(ApplicationDbContext context)
{
_context = context
}
public int Add(Book model)
{
// ...
return _context.SaveChanges();
}
// other implements...
}
次に、コントローラ内部でそれを呼び出す:インタフェースについては
public IActionResult Create(Book model)
{
var bookData = new BookData(_context);
int result = bookData.Add(model);
// ...
}
、私はそれがケースのために有用である可能性があると思う:私は同じ必要とする多くのコントローラを持っていますアクション/メソッド名。
例:MessageController
は、少なくとも3つの操作/方法が必要です(Create/Add
,Edit/Update
、Delete/Remove
)。それは、NotificationController
クラス、CommentController
クラス...だから
に同じですが、インターフェースが改善することができます。
public interface IMyService<T> where T : class
{
int Add(T model);
int Update(T model);
int Remove(T model);
}
public class MyService<T> : IMyService<T> where T : class
{
private readonly ApplicationDbContext _context { get; set; }
public MyService(ApplicationDbContext context)
{
_context = context;
}
public int Add(T model)
{
Type type = typeof(model);
if (type == typeof(Book))
{
// adding new book model
}
else if (type == typeof(Comment))
{
// adding new comment model
}
// ...
return -1;
}
// other implements...
}
私が何かを誤解していますか?