我知道这听起来很奇怪。 我正在做一个锻炼项目:一个简单的资金经理。 这是数据库图表:
我开始创建一个包含所有数据访问方法的WCF服务。 这是文件夹结构:
在Model文件夹中,有类似MVC项目的类。
这里是Service.svc:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using WCFServices.Money.Model;
namespace WCFServices.Money
{
// NOTA: è possibile utilizzare il comando "Rinomina" del menu "Refactoring" per modificare il nome di classe "Service" nel codice, nel file svc e nel file di configurazione contemporaneamente.
// NOTA: per avviare il client di prova WCF per testare il servizio, selezionare Service.svc o Service.svc.cs in Esplora soluzioni e avviare il debug.
public class Service : IService
{
MoneyEntities db = new MoneyEntities();
#region Methods to get items name by Id
public string GetAccountNameById(long id)
{
return db.Accounts.Find(id).Name;
}
public string GetBeneficiaryNameById(long id)
{
return db.Beneficiaries.Find(id).Name;
}
public string GetCategoryNameById(long id)
{
return db.Categories.Find(id).Name;
}
public string GetProjectNameById(long id)
{
return db.Projects.Find(id).Name;
}
public string GetSubcategoryNameById(long id)
{
return db.Subcategories.Find(id).Name;
}
public string GetTimeUnitNameById(long id)
{
return db.TimeUnits.Find(id).Name;
}
#endregion
// And so go on...
}
}
你可以看到它非常简单。
创建添加了服务引用的MVC项目之后。 现在我想为Transactions表创建一个Controller,但是在DbContext选择器中我找不到在WCF服务中创建的DbContext。
所以我在MVC项目中也创建了一个MoneyEntities.cs,它看起来像:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace Money.Model
{
public class MoneyEntities : DbContext
{
public DbSet<ServiceReference.Account> Accounts { get; set; }
public DbSet<ServiceReference.Beneficiary> Beneficiaries { get; set; }
public DbSet<ServiceReference.Category> Categories { get; set; }
public DbSet<ServiceReference.Interval> Intervals { get; set; }
public DbSet<ServiceReference.Project> Projects { get; set; }
public DbSet<ServiceReference.Subcategory> Subcategories { get; set; }
public DbSet<ServiceReference.TimeUnit> TimeUnits { get; set; }
public DbSet<ServiceReference.Transaction> Transactions { get; set; }
}
}
所以控制器已经创建但是当我运行一个视图时,我遇到了很多错误...... 你有什么建议吗?
谢谢