|
Other features in MvcScaffolding include:
MvcScaffolding에 다른 기능은 다음과 같습니다 :
Support for C# and VB projects
Support for the Razor and ASPX view engines
Supports scaffolding into ASP.NET MVC areas and using custom view layouts/masters
You can easily customize the output by editing T4 templates
You can add entirely new scaffolders using custom PowerShell logic and custom T4 templates. These (and any custom parameters you’ve given them) automatically appear in the console tab-completion list.
You can get NuGet packages containing additional scaffolders for different technologies (e.g., there’s a proof-of-concept one for LINQ to SQL now) and mix and match them together
It’s currently at a beta level so it is expected to work but if you push it in funny ways you might get odd results. Please let me know if you discover issues – I’m sure there’ll be some – so we can tidy it up and make it more robust.
그것은 현지 베타 수준에서 성공적인 작업이 예상되지만 작동을 한다면 이상한 결과를 얻을수도 있다. 발견된 문제가 있다면 나에게 알려주십시오. -나는 약간은 그러한 것이 있을것이라는 것을 확신합니다. - 그래서 우리는 그것을 깔끔히 정리하고 더 강력하게 만들수 있습니다.
Installation
The short version is this: Install-Package MvcScaffolding. If you understood that, do it and skip ahead to “Scaffolding a CRUD interface”. If not, read on.
짧은 버전은 이것이다 : 설치 - 패키지 MvcScaffolding. 당신이 그것을 이해한다면, “Scaffolding a CRUD interface”로 건너뛰어라. 그렇지 않다면, 읽으십시오
1. 우수한 NuGet에게 패키지 관리자를 포함 설치 ASP.NET MVC 3.
2. 작성하거나 ASP.NET MVC 3 웹 응용 프로그램을 엽니다. 난 내 'SoccerSite'을 불러옵니다.
3. MvcScaffolding 패키지를 설치합니다. 당신은 NuGet 패키지 관리자 콘솔, 그래서 그것은 단 몇 초 정도 걸립니다 그리고 당신은 당신의 브라우저를 사용하는 아무것도를 다운로드하지 않아도 사용하여 설치할 수 있습니다. 이렇게하려면
Open the Package Manager Console window using Visual Studio’s View->Other Windows->Package Manager Console menu item.
Enter the following:
Install-Package MvcScaffolding
비주얼 스튜디오의보기 -> 다른 윈도우>를 패키지 관리자 콘솔 메뉴 항목을 사용하여 패키지 관리자 콘솔 창을 엽니다.
다음을 입력 :
설치하는 패키지에 MvcScaffolding
That’s it! Note: be sure you installed MvcScaffolding, not MvcScaffold. We’ll retire the old MvcScaffold package shortly.
In case you’re wondering, EFCodeFirst is the new super-elegant version of Entity Framework that persists plain .NET objects to a relational database without any configuration fuss, T4Scaffolding is the core scaffolding infrastructure (locates types in your project, finds scaffolders in other packages, renders templates, etc), and MvcScaffolding is a set of ASP.NET MVC-specific templates (for controllers and views) that bolts onto the T4Scaffolding core.
바로 그거에요! 참고 사항 : 반드시 당신이 MvcScaffold 아니라 MvcScaffolding 설치되어 있어야합니다. 우리는 곧 예전의 MvcScaffold 패키지를 상용하지 않습니다.
당신이 알기를 원하는 경우, EFCodeFirst는 여전히 지속되는 어떤 요란한 구성도 없는, EF 프레임워크의 우아한 새로은 버전이며, T4Scaffolding는 핵심 scaffold 인프라 (프로젝트에 위치 유형은 다른 scaffolders를 찾는, 렌더링 템플릿 등) 이며, MvcScaffolding은 T4Scaffolding 코어에 볼트와 같은 .Net MVC 전용 컨트롤러(컨트롤러 및 뷰에 대한)이다.
Scaffolding a CRUD interface
Let’s create a model for a soccer team. Add the following class to your Models folder, then compile your solution (Ctrl-Shift-B):
namespace SoccerSite.Models { public class Team { public int TeamId { get; set; } [Required] public string Name { get; set; } public string City { get; set; } public DateTime Founded { get; set; } } } |
Next, we can create a complete Create-Read-Update-Delete (CRUD) UI for this model by issuing a single scaffolding command into the Package Manager Console:
다음으로, 우리는 패키지 메니저 콘솔의 단일 scaffolding 명령으르로 모델에 대하여 생성, 읽기, 업데이트, 삭제(CRUD)를 완벽하게 만들자:
Scaffold Controller Team
Note: You can use the TAB key to autocomplete many things in the Package Manager Console. In this case, you can autocomplete the words “Scaffold” and “Controller”, since the scaffolding package knows about them. It doesn’t know about “Team”, though – we may add completion on model type names in a future version.
참고 : 패키지 관리자 콘솔에서 자동 완성 많은 것들을 위해 Tab 키를 사용할 수 있습니다. 이 경우에, 당신은 단어 "scaffold"및 "controller", scaffold는 그들에 대해 자동 완성 되기 때문에. 그래도, "팀"에 대해 모르고있다 - 우리는 차기 버전에서 모델 유형 이름에 완료를 추가할 수 있습니다.
As you can see, it’s gone ahead and created a controller, a database context (a tiny bit of Entity Framework code that represents a data store), and views for all the CRUD actions. You can run it right now (Shift-F5), and as long as you have SQL Server Express running on your machine, EFCodeFirst will automatically connect to it, create your database schema, and you’ve got a basic working application without writing a single line of procedural code.
Note that since the model was called “Team”, the controller is called “TeamController”, so to reach it you need to point your browser to http://…/team:
The database is initially empty.
Creating an item. Validation rules are applied automatically. Note that since “Founded” is a DateTime it can’t be null and hence is required. Change it to DateTime? (i.e., with the question mark to make it nullable) if you want it to be optional.
Listing items
Deleting an item
But what if I don’t have SQL Express installed?
If you don’t have SQL Express installed and running, you may have got the following error when your code tried to read or write some data:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Blah blah blah…
No problem! You can quickly switch to use the new SQL Server Compact – a lightweight, in-process database – without having to download or install anything manually. Simply add SQL Server Compact to your project by issuing the following command in the Package Manager Console:
Install-Package EFCodeFirst.SqlServerCompact
Ta da – no more external database required. Run your project again (Shift-F5) and this time it will create and connect to a file-based database (a .sdf file will appear in your ~/App_Data folder). The EFCodeFirst.SqlServerCompact package adds a file to your project called AppStart_SQLCEEntityFramework.cs, which configures the runtime to use SQL CE.
Of course you probably still want the proper version of SQL Server when you eventually deploy your application for public use, but for small applications or for learning, SQL CE is really handy.
Scaffolding a repository
If you check out the code right now, you’ll see that TeamController reads and writes the data in SoccerSiteContext directly. That’s fine in many simple scenarios, but if you want to decouple your controller logic from persistence logic a little (e.g., so that you can write clean unit tests for the controller), you may prefer to reach your data through an interface.
No problem! Let’s regenerate the controller with the –Repository flag:
Scaffold Controller Team –Repository -Force
Notice that we also need to say –Force, otherwise the scaffolder won’t overwrite the files you already have in your project. Now the scaffolder will produce an additional class, TeamRepository, and the following interface which TeamRepository implements:
public interface ITeamRepository
{
void Add(Team post);
void Delete(int id);
IEnumerable<Team> GetAllTeams();
Team GetById(int id);
void Save();
}
TeamController will now only read and write data using ITeamRepository. If you’re new to ASP.NET MVC it may not be obvious why this is desirable, but if you start trying to write unit tests or switch data access technologies, you’ll find this interface-based data access method to be much cleaner and more flexible.
There’s so much more
It’s not just about CRUD! You can use scaffolding to create any type of project item if you write a template for it. This blog post has covered only the absolute beginning of what you can do, so over the coming days I’ll write blog posts to cover:
Scaffolding specific individual items (e.g., views, repositories, etc) rather than whole controllers and related files
Getting additional scaffolder packages and controlling which ones are used by default. For example, there’s currently a proof-of-concept LINQ to SQL scaffolding package that you can install and set to act as the default type of repository/data context.
Customising the T4 templates that the scaffolders use to generate code
Creating entirely new custom scaffolders for new types of things (e.g., unit test fixtures)
ㄴㄴㄴㄴ
|