2016-12-19 3 views
0

У меня есть вопрос.SQL Table to C#

Во-первых, мне нужно сказать вам, что я новичок в программировании и попробовал учебное пособие.

Теперь мой вопрос: как я могу получить несколько таблиц Sql для C#. На данный момент мой код C# читает только из одной таблицы. Но мне нужна информация о других таблицах.

На данный момент я только получать информацию из таблицы: «Domeinnaam» Теперь мне нужно, чтобы получить информацию из таблиц: X & Y.

Как я должен это делать?

Мой код:

Контроллер

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using DNDB.Models; 
using System.Data.SqlClient; 

namespace DNDB.Controllers 
{ 
public class DomeinnaamController : Controller 
{ 
    // GET: Domeinnaam 
    public ActionResult Index() 
    { 
     var entities = new DomeinnaambeheerEntities1(); 

     return View(entities.Domeinnaam.ToList()); 
    } 
    public ActionResult CreateDomainName() 
    { 
     return View(); 
    } 

Автоматическая генерироваться страница:

@model IEnumerable<DNDB.Models.Domeinnaam> 

@foreach (var item in Model) 
{ 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.IsActief) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Naam) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.TLD) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.DatumRegistratie) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Omschrijving) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.DatumOpzeg) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.EigenaarID) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Opmerking) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.BeheerAccountID) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.KlantID) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.RegistrarID) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.BetaaldVan) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.BetaaldTot) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.AfspraakPrijs) 
    </td> 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id = item.ID }) 
     @Html.ActionLink("Details", "Details", new { id = item.ID }) 
     @Html.ActionLink("Delete", "Delete", new { id = item.ID }) 
    </td> 
</tr> 
} 

Createdomeinnaam.cshtml

@model DNDB.Models.Domeinnaam 

@Styles.Render("~/Content/StyleSheet.css") 
@{ 
ViewBag.Title = "CreateDomainName"; 
} 
@using (Html.BeginForm()) 
{ 
<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>CreateDomainName</title> 
</head> 
<body> 

    <label>IsActief</label> 
    @Html.CheckBoxFor(m => m.IsActief) 
    <label>Naam</label> 
    @Html.TextBoxFor(m => m.Naam) 
    <label>TLD</label><br /> 
    @Html.TextBoxFor(m => m.TLD) 
    <label>DatumRegistratie</label><br /> 
    @Html.TextBoxFor(m => m.DatumRegistratie) 
    <label>Omschrijving</label><br /> 
    @Html.TextBoxFor(m => m.Omschrijving) 
    <label>OpzegDatum</label><br /> 
    @Html.TextBoxFor(m => m.DatumOpzeg) 
    <label>EigenaarID</label><br /> 
    @Html.TextBoxFor(m => m.EigenaarID) 
    <label>Opmerking</label><br /> 
    @Html.TextBoxFor(m => m.Opmerking) 
    <label>BeheerAccountID</label><br /> 
    @Html.TextBoxFor(m => m.BeheerAccountID) 
    <label>KlantID</label><br /> 
    @Html.TextBoxFor(m => m.KlantID) 
    <label>RegistrarID</label><br /> 
    @Html.TextBoxFor(m => m.RegistrarID) 
    <label>BetaaldVan</label><br /> 
    @Html.TextBoxFor(m => m.BetaaldVan) 
    <label>BetaaldTot</label><br /> 
    @Html.TextBoxFor(m => m.BetaaldTot) 
    <label>Prijsafspraak</label><br /> 
    @Html.TextBoxFor(m => m.AfspraakPrijs) 
    <br /> 

</body> 
</html> 

<input type="submit" value="add"> 
} 

Извините, если мой вопрос не 100% сл уха. Объяснение также немного сложно для меня, потому что я не понимаю всего программирования. Пожалуйста, скажите мне, когда вам нужно разъяснение.

EDIT: Пример кода будет потрясающим.

Спасибо, много, ребята.

+0

Если вы импортировали эти таблицы в Entity Framework, они должны быть доступны через объект объектов. Вы пробовали сущности.X и сущностей.Y? –

+0

Возможный дубликат [Как заполнить набор данных несколькими столами?] (Http://stackoverflow.com/questions/11345761/how-to-fill-dataset-with-multiplettables) –

+0

@AlexandruPupsa Знаю, что это оптический, но я не знаю, как добавить эту часть в мой код. Где я должен добавить строку, чтобы сделать это? – mrminer

ответ

0

Вы должны использовать Entity Framework для связи с базой данных. Посмотрите на https://msdn.microsoft.com/en-us/library/aa937723(v=vs.113).aspx, вы не потратите много времени, набрав все это самостоятельно, если есть фреймворк, который может сделать это для вас (особенно для больших баз данных), если только не существует особой причины, почему вы можете " t использовать его.

2

Если я правильно понял, вы хотите отображать данные из трех разных таблиц. Я предполагаю, что вы хотите показывать данные только там, где они совпадают в этих трех таблицах. Так что вы хотите сделать, это написать запрос Linq сначала как

var joinQuery = from d in entities.Domeinnaam 
         join x in entities.X on d.DomeinnaamId equals x.XId 
         join y in entities.Y on d.DomeinnaamId equals y.YId 
         into dom 
         select new { Domeinnaam = dom }; 

Пожалуйста, обратите внимание - я не знаю точную структуру ваших сущностей, так я предполагаю, что здесь. Вы можете изменить его соответственно.

Теперь вы хотите создать класс в своей папке Models и назовите его так, как я его назвал SomeViewModel это будет наша модель, которую мы будем использовать. На данный момент класс включает только имущество

public IEnumerable<Domeinnaam> Domeinnaam { get; set; } 

Теперь, чтобы добавить комментарий, где вы хотите добавить этот код. Как я уже говорил, вы можете добавить его в представление, на которое хотите его вернуть.Например, если у вас есть мнение по имени Index, где вы хотите эту информацию, отображаемую то вы будете писать в Action имени Index, который находится в контроллере, так давайте предположим, у нас есть контроллер с именем SomeController это то, как он будет выглядеть

public class SomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var viewModel = new SomeViewModel(); 

     var entities = new DomeinnaambeheerEntities1(); 

     //change the below query accordingly 
     var joinQuery = from d in entities.Domeinnaam 
         join x in entities.X on d.DomeinnaamId equals x.XId 
         join y in entities.Y on d.DomeinnaamId equals y.YId 
         into dom 
         select new { Domeinnaam = dom }; 

     viewModel.Domeinnaam = joinQuery; 

     return View(viewModel); 
    } 
} 

SomeViewModel класс будет выглядеть

public class SomeViewModel 
{ 
    public IEnumerable<Domeinnaam> Domeinnaam { get; set; } 
} 

по вашему мнению по имени Index вы хотите передать в SomeViewModel

Это должно дать вам основную идею. Если у вас есть вопросы, пожалуйста, дайте мне знать

+0

Спасибо за это Иззи, у меня есть один вопрос. Как я могу сообщить своей автогенерируемой странице, с какой таблицы она должна выбрать информацию? Например, @ Html.DisplayFor (modelItem => item.Name) Как узнать, с какой таблицы ему нужно получить имя? – mrminer

+0

@mrminer Вы можете добавить соответствующие свойства в класс viewModel, например, в 'SomeViewModel' и так далее. но вам нужно будет предоставить данные для каждого свойства, если вы хотите, чтобы он отображался в представлении, иначе он выдаст ошибку – Izzy

+0

Но какой код мне следует изменить? потому что я тебя не понимаю? Должен ли я что-то изменить в: @model IEnumerable @foreach (вар элемент в модели) Или: @ Html.DisplayFor (ModelItem => item.IsActief) – mrminer