将GET与实体框架转换为没有实体框架的GET

时间:2016-07-28 22:01:27

标签: c# asp.net angularjs entity-framework

我正在关注ASP.NET MVC&的在线教程。 Angular,但作者(Sourav Mondal)使用Entity来查询数据库。不幸的是,我使用的是SQL Server 2000,EF不是一个选项。以下是我试图转置的代码:

// GET: /Data/
//For fetch Last Contact
public JsonResult GetLastContact()
{
       Contact c = null;
       //here MyDatabaseEntities our DBContext
       using (MyDatabaseEntities dc = new MyDatabaseEntities())
       {
           c = dc.Contacts.OrderByDescending(a => a.ContactID).Take(1).FirstOrDefault();
       }
       return new JsonResult { Data = c, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

这是我目前对无EF解决方案的推测,假设联系人在数据库中有三个字段ContactIDNamePassword

Models/Contact.cs上课:

public class Contact
{
    public string Name { get; set; }
    public string Password { get; set; }
}

Controllers/DataController.csGetLastContact()

public class DataController : Controller
{
    // GET: /Data/
    public JsonResult GetLastContact()
    {

        Contact c = null;
        using (SqlConnection cnxn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["TheConnectionString"].ConnectionString))
        {
            using (SqlCommand sqlQuery = new SqlCommand("SELECT TOP 1 ContactID FROM Northwind ORDER BY ContactID DESC "))
            {
                cnxn.Open();
                SqlDataReader reader = sqlQuery.ExecuteReader();

                while (reader.Read())
                {
                    string contact_ID = (string)reader["ContactID"];
                    string first_name = (string)reader["Name"];
                    string password = (string)reader["Password"];
                }
                // Some magic here

                reader.Close();
                cnxn.Close();
            }
        }

        return new JsonResult { Data = c, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    }
}

Sourav的Angular代码:

        angular.module('MyApp') //extending from previously created angular module in the previous part
        .controller('Part2Controller', function ($scope, ContactService) { //inject ContactService
            $scope.Contact = null;
            ContactService.GetLastContact().then(function (d) {
                $scope.Contact = d.data; // Success
            }, function () {
                alert('Failed'); // Failed
            });
        })
        .factory('ContactService', function ($http) { // here I have created a factory which is a populer way to create and configure services
            var fac = {};
            fac.GetLastContact = function () {
                return $http.get('/Data/GetLastContact');
            }
            return fac;
        });  

我觉得虽然我的解决方案可能是意大利面条,但它离工作也不会太远。任何人都可以提供这些代码的任何小推动都会很棒!或者关于如何开始剥离其实体的实体的任何建设性建议。

2 个答案:

答案 0 :(得分:1)

// Some magic here
c = new Contact
{
  Name = first_name,
  Password = password
};
// end of magic

答案 1 :(得分:0)

我不确定你想要什么。

对我来说,它听起来更像是你想为自己的数据库制作自己的实体(不支持EF)

所以只需创建一个表的类并获取它的List就可以了。

小例子:

SomeClass的

列出allContactsInDatabase;

要保持数据更新,请使用轮询,或者每30秒调用一次刷新,或者根据需要更快/更慢地调用。

希望有帮助