使用实体框架实时保存数据 [英] Real time Data Saving With Entity Framework

查看:76
本文介绍了使用实体框架实时保存数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我构建了一个获取Twitter流的控制台应用程序,我可以毫无问题地看到实时推文。但是,当我向实体框架添加推文对象时,即使我看不到推文也没有任何反应。所以我想也许我不应该使用实体框架,也许那里
是另一种解决方案,我不知道因为我搜索了网络我找不到任何解决方案或建议。如何将实时推特数据添加到sql server? 非常感谢你。

类TwitterStream 
{

static void Main(string [] args)
{

//认证
Auth.SetUserCredentials("x","y","z","t");

//创建Stream
var stream = Stream.CreateFilteredStream();

//跟踪关键字
stream.AddTrack(" somethingPopuler");

//消息让你知道它正在运行
Console.WriteLine("我正在听Twitter");



//在制作跟踪器的推文产生时调用
stream.MatchingTweetReceived + =(sender,arguments)=>
{
var tweet = arguments.Tweet;
TweetSave(推文);
};

stream.StartStreamMatchingAllConditions();
}

private static void TweetSave(ITweet tweet)
{
Console.WriteLine(" tweet:");
using(var db = new Context())
{
var user = tweet.CreatedBy;
var fcount = 0;
var rcount = 0;
if(tweet.IsRetweet == false)
{
fcount = tweet.FavoriteCount;
rcount = tweet.RetweetCount;
}
其他
{
var rt = tweet.RetweetedTweet;
fcount = rt.RetweetCount;
rcount = rt.FavoriteCount;
}
var twit = new PTweet
{
created_at = tweet.CreatedAt.ToString(),
tid = tweet.Id,
text = tweet .FullText,
favorite_count = fcount,
retweet_count = rcount,
Uid = user.Id,
Uscreen_name = user.ScreenName,
Uname = user.Name,
Ulocation = user.Location,
Ustatuses_count = user.StatusesCount,
Uimage_url = user.ProfileImageUrlHttps

};
Console.WriteLine(twit.text);
db.Stream.Add(twit);
db.SaveChanges();
};

}
}



公共类上下文:DbContext 
{
public Context():base(" TwitterSon")
{}
public DbSet< PTweet>流{get;组; }
}


 app.config:

< connectionStrings>
< add name =" TwitterSon" connectionString =" server =(localdb)\ MSSQLLocalDB; database = SosyalJ; integrated security = true;"的providerName = QUOT; System.Data.SqlClient的" />
< / connectionStrings>


解决方案

您确定要指向正确的数据库吗?您确定使用SSMS或VS的服务器资源管理器查看正确的数据库,因为我发现代码没有问题吗?


但是,您可以将实体的状态设置为Add。 / p>

https://docs.microsoft.com/en-us/ef/ef6/saving/change-tracking/entity-state



Hello, I build a console application that get twitter stream and I can see live tweet without problem. But when I add tweet object to entity framework nothing happens even I can't see tweets.So I thought maybe I shouldn't use Entity framework and maybe there is another solution that I don't know cause I searched the web I ca't find any solution or advice. How can I add live twitter data to sql server ?  Thank you so much.

  class TwitterStream
    {

        static void Main(string[] args)
        {

            // Authentication
            Auth.SetUserCredentials("x","y","z","t");

            // Create the Stream
            var stream = Stream.CreateFilteredStream();

            // Keywords to Track
            stream.AddTrack("somethingPopuler");

            // Message so you know its running
            Console.WriteLine("I am listening to Twitter");



            // Called when a tweet maching the tracker is produced
            stream.MatchingTweetReceived += (sender, arguments) =>
            {
                var tweet = arguments.Tweet;
                TweetSave(tweet);
            };

            stream.StartStreamMatchingAllConditions();
        }

        private static void TweetSave(ITweet tweet)
        {
            Console.WriteLine(" tweet: ");
            using (var db = new Context())
            {
                var user = tweet.CreatedBy;
                var fcount=0;
                var rcount=0;
                if (tweet.IsRetweet == false)
                {
                    fcount = tweet.FavoriteCount;
                    rcount = tweet.RetweetCount;
                }
                else
                {
                    var rt = tweet.RetweetedTweet;
                    fcount = rt.RetweetCount;
                    rcount = rt.FavoriteCount;
                }
                var twit = new PTweet
                {
                    created_at = tweet.CreatedAt.ToString(),
                    tid = tweet.Id,
                    text = tweet.FullText,
                    favorite_count = fcount,
                    retweet_count = rcount,
                    Uid = user.Id,
                    Uscreen_name = user.ScreenName,
                    Uname = user.Name,
                    Ulocation = user.Location,
                    Ustatuses_count = user.StatusesCount,
                    Uimage_url = user.ProfileImageUrlHttps
                   
                };
                Console.WriteLine(twit.text);
                db.Stream.Add(twit);
                db.SaveChanges();
            };

        }
    }


  public class Context : DbContext
        {
            public Context() : base("TwitterSon")
            { }
            public DbSet<PTweet> Stream { get; set; }
        }

app.config :

<connectionStrings>
    <add name="TwitterSon" connectionString="server=(localdb)\MSSQLLocalDB;database=SosyalJ;integrated security=true;" providerName="System.Data.SqlClient" />
</connectionStrings>

解决方案

Are you sure you are pointing to the right database? Are you sure you are looking at the right database using SSMS or the VS's Server Explorer, because I see nothing wrong with the code?

However, you could set the Entity's state to Add.

https://docs.microsoft.com/en-us/ef/ef6/saving/change-tracking/entity-state


这篇关于使用实体框架实时保存数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆