我试图将localdb与asp mvc一起使用 我从我的visual studio 2013安装了EF 6.0(带有nuget)
using OCR_Restaurant.Models;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
namespace OCR_Restaurant
{
using System;
using System.Data.Entity;
using System.Linq;
public class BddContext : DbContext
{
public BddContext()
: base("name=BddContext")
{
}
public DbSet<Sondage> Sondages { get; set; }
public DbSet<Resto> Restos { get; set; }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OCR_Restaurant.Models
{
interface IDal: IDisposable
{
void CreerRestaurant(string nom, string telephone);
List<Resto> ObtientTousLesRestaurants();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace OCR_Restaurant.Models
{
public class Dal:IDal
{
private BddContext bdd;
public Dal()
{
bdd = new BddContext();
}
public List<Resto> ObtientTousLesRestaurants()
{
return bdd.Restos.ToList();
}
public void Dispose()
{
bdd.Dispose();
}
public void CreerRestaurant(string nom, string telephone)
{
Resto resto = new Resto { Id = 1, Nom = nom, Telephone = telephone };
bdd.Restos.Add(resto);
}
}
}
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="BddContext" connectionString="data source=(LocalDb)\v11.0;initial catalog=OCR_Restaurant.BddContext;integrated security=TRUE;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Data.Entity;
using OCR_Restaurant.Models;
using System.Collections.Generic;
using System.Linq;
namespace OCR_Restaurant.Tests
{
[TestClass]
public class DalTests
{
[TestMethod]
public void CreerRestaurant_AvecUnNouveauRestaurant_ObtientTousLesRestaurantsRenvoitBienLeRestaurant()
{
using (Dal dal = new Dal())
{
dal.CreerRestaurant("La bonne fourchette", "01 02 03 04 05");
List<Resto> restos = dal.ObtientTousLesRestaurants();
Assert.IsNotNull(restos);
Assert.AreEqual(1, restos.Count);
Assert.AreEqual("La bonne fourchette", restos[0].Nom);
Assert.AreEqual("01 02 03 04 05", restos[0].Telephone);
}
}
}
}
当我运行&#34;测试&#34;时,我收到以下消息: &#34;没有名为&#39; BddContext&#39;的连接字符串可以在应用程序配置文件&#34;
中找到我认为一切都很好,但也许是错的? 谢谢你的帮助。
答案 0 :(得分:1)
测试是运行代码的测试。当它寻找一个连接字符串时,它会查找它自己的项目,而不是你的MVC项目。
快速简便的解决方案是将连接字符串添加到测试项目的app.config文件中。
答案 1 :(得分:0)
我假设您有一个单独的测试项目,其中包含您的测试类(DalTests)。如果您确保测试项目的app.config具有相同的BddContext连接字符串条目,则不应发生错误,因为测试项目在其自己的配置文件中查找,而不是在mvc项目或任何其他库中查找。< / p>
答案 2 :(得分:0)
根据您的指示,我找到了解决方案:
然后visual studio生成一个很好的app.config。 在此文件中添加连接字符串。