PDA

View Full Version : سوال: مشکل در روش Code First Entity



aroshanzamir
پنج شنبه 21 فروردین 1393, 23:35 عصر
سلام دوستان
من می خواهم با روش Code First کار کنم ولی همش بهم خطا میده ..
1- پکیج Entity را اضاف می کنم
2-کلاس ها را می نویسم

public class Blog
{
public int Id { get; set; }
public string Name { get; set; }
public virtual List<Post> Posts { get; set; }
public Blog()
{
Posts = new List<Post>();
}
}


public class Post
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Blog Blog { get; set; }
}



public class DataCollection:DbContext
{
public DataCollection() : base("DataCollection") { }
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Postes { get; set; }
}


و فایل وب کانفیگ :


<connectionStrings>
<add name="DataCollection"
connectionString="Data Source=.;Initial Catalog=ServiceAWModel;Integrated Security=True" />
</connectionStrings>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrame workSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectio nFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>



و این هم کد برنامه :


using(var db=new DataCollection())
{
Blog _blog = new Blog() { Name="Math" };
_blog.Posts.Add(new Post { Name="Hello" });
_blog.Posts.Add(new Post { Name="Hi"});


db.Blogs.Add(_blog);
db.SaveChanges();
}


در ضمن در پایگاه داده دیتابیس هم ایجاد کردم ....باز هم خطا داره


ممنون ....

aghayex
جمعه 22 فروردین 1393, 08:36 صبح
شما باید قدم به قدم جلو بری تا مشکلات رو حل کنی .
در ef شما باید برای هر تیبل یک کلید در نظر بگیری و این یک اجباره . برای تعیین کلید هم اتریبیوت [key] رو بالای پروپرتی ای دی قرار بده , البته اگه می خوایی ستون ای دی رو خودت مقدار دهی کنی باید اتریبیوت [DatabaseGenerated(DatabaseGeneratedOption.None)] رو هم به بالای پروپرتی ای دی اضافه کنی اما اگه این کارو نکنی خود ef ستون ای دی رو مقدار دهی می کنه .
در خصوص این کد پایین هم به صورت پایین عمل کن :

public virtual List<Post> Posts { get; set; } public Blog() { Posts = new List<Post>(); }



public virtual ICollection<Post> Post{get;set;}
public int PostId{get;set;}

aroshanzamir
جمعه 22 فروردین 1393, 16:21 عصر
سلام .. ممنون از راهنمایی شما :

الان به نظر شما من باید چکار کنم

من که هر کاری می کنم جواب نمی گیرم .. شما خودت هم امتحان کنی فقط با همین کد ها می بینی که خطا داره ................

aroshanzamir
شنبه 23 فروردین 1393, 15:56 عصر
بچه دمتون گرم :

یکیتون جواب سوال من را بدید .. ممنون

aghayex
شنبه 23 فروردین 1393, 18:53 عصر
دوست عزیز بهتون توصیه می کنم سری آموزش های entity frame work آقای نصیری رو بخونید تا تا پایتون قوی بشه . اگه مشکلی هم بود در خدمتیم .