asp.net mvc sans cadre d'entité
Je suis en apprentissage asp.net mvc et est allé par le biais d'un tutoriel qui le démontre. Le tutoriel aussi utilisé Entity Framework.
Nous avons notre propre accès aux données de la classe que j'ai à utiliser.
Je suis un peu confus quant à ce que je dois faire pour combler le fossé entre la classe et le framework MVC.
Par exemple, dans le tutoriel, à l'intérieur de MovieController.cs fichier, il y a une méthode Edit, qui ressemble à ceci:
[HttpPost]
public ActionResult Edit(Movie movie)
{
if (ModelState.IsValid)
{
db.Entry(movie).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movie);
}
Si je n'utilise pas le cadre de l'Entité, à quoi ressemblerait-il? Vais-je encore besoin d'utiliser ModelState.IsValid et enregistrer l'état comme c'est fait
db.Entry(movie).State = EntityState.Modified;
Veuillez en informer. Un écrit clair exemple de l'utilisation de asp.net mvc sans l'utilisation d'Entity framework serait génial.
Ce que j'ai besoin de savoir, c'est quel est le rôle de l'état jouent ici et si il est obligatoire d'utiliser ou est-ce juste une partie de la façon dont le cadre de l'Entité opère.
Je re-écrire ce que:
[HttpPost]
public ActionResult Edit(Movie movie)
{
myDBObject.SaveChanges();
return RedirectToAction("Index");
}
Où myDBObject est ma coutume accès à la base de l'objet.
source d'informationauteur sarsnake
Vous devez vous connecter pour publier un commentaire.
Les exemples que vous voyez là-bas où les contrôleurs utilisent directement certaines données access framework comme Entity Framework sont de mauvais exemples. L'ensemble de l'internet est pollué par ce genre de chose. Je peux à peine le regarder sans avoir mal de mes yeux. Je considère celles-ci comme des mauvaises pratiques. L'accès aux données devraient être séparés et rassemblées dans un référentiel. Ainsi, par exemple:
vous pourriez avoir de l'implémentation de cette interface à l'aide de la plaine ADO.NET, EF, NHibernate, un service web distant appel, certains personnalisée ORM ou vraiment quoi que ce soit:
et le contrôleur va prendre ce référentiel d'interface comme argument du constructeur:
et la dernière partie est la configuration de votre infrastructure d'injection de dépendance pour passer à la bonne application du référentiel dans le contrôleur. Maintenant, comme vous pouvez le voir de la façon dont les données sont extraites est complètement découplé de la logique du contrôleur. C'est la façon dont il devrait être. Toujours essayer d'éviter le couplage fort entre les différentes couches de votre application.
Et pour répondre à votre question sur l'État de la propriété : ceci est quelque chose de tout à fait spécifique pour EF, voir quelque chose comme cela dans un contrôleur est réellement dommage.
Et pour apporter encore plus loin et améliorer vous présenter les modèles de vue. Afficher les modèles sont des classes qui sont spécifiquement conçus pour répondre aux exigences d'une vue donnée. Ainsi, par exemple, le Film est un modèle de domaine. Les modèles de domaine ne doit jamais être directement transmis à vue. Les actions du contrôleur ne doit jamais prendre les modèles de domaine comme arguments de l'action. Vous devez définir les modèles de vue qui ne contiendra que ce qui est requis par la vue donnée, puis d'effectuer la correspondance entre les modèles de vue et les modèles de domaine. Des Frameworks tels que AutoMapper faire de cette très simple.
hmm.
MVC et entity framework vraiment n'ont rien à voir les uns avec les autres; ils ont juste bien travailler ensemble.
la
if (ModelState.IsValid)
valide votre modèle de vue. Si vous n'utilisez pas de voir les objets avec les validateurs, c'est un peu inutile; si vous êtes, alors il est tout à fait précieux.à l'intérieur de la
if (ModelState.IsValid)
crochets, vous devez prendre le poste de données à partir de votre page web (généralement d'un modèle de vue) et de l'appliquer à l'objet qui va persister dans la base de données. EF est souvent utilisé parce qu'une fois que c'est mis en place, c'est assez facile à maintenir, et beaucoup moins de code à écrire.sont à la fois liées à EF. Ceux-ci devraient être remplacés par votre référentiel de méthodes de la classe et des objets.
est MVC. En cas de réussite de la persistance de votre magasin de données, de retour de la commande à la page d'index.
est utilisé pour rediriger retour à la vue d'origine, parce que quelque chose d'échec de la validation.
Vous voulez quand de vérifier
ModelState.IsValid
mais sinon, ton code devrait ressembler à ce que vous avez.Cela suppose que votre modèle a
DataAnnotations
attributs sur elle, cependant, qui est ce queModelState.IsValid
est à l'aide de vérifier. Ces attributs peuvent être utilisés sur n'importe quel classe C# "propriétés" - pas seulement Entity Framework.Vous risquez de vous retrouver à la création de certains modèles de vue de ce but.
Vous avez besoin de faire un lien entre l'objet vidéo (passé sur la http POST) et votre base de données de méthodes (myDBObject).
Peut-être vous voulez dire
myDBObject.SaveChanges(movie)
et en supposant que votre db code sait comment manipuler l'objet Film, puis vous serez amende.